1 голос
 
89 просмотров
9.05.2021 / 12:29  SuperSystem

WindowManager, не отображаются элементы на Android Oreo

В чём моя ошибка?
Сервис работает отлично!
но не как неполучается вывести View на экран!
в AndroidManifest.xml разрешение вкючено:
  1. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
в android вкючено разрешение для приложения!
я уже всё по документации сделал, и всё равно!
мой код:
  1. import android.app.*;
  2. import android.content.*;
  3. import android.graphics.*;
  4. import android.os.*;
  5. import android.view.*;
  6. import android.view.View.*;
  7. import android.view.WindowManager.*;
  8. import android.widget.*;
  9.  
  10. public class MainService extends Service
  11. {
  12.     public static final int ID = 1024;
  13.  
  14.     public MainService()
  15.     {
  16.         super();
  17.     }
  18.  
  19.     public void onCreate(){
  20.         super.onCreate();
  21.         final WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
  22.         int type = 0;
  23.         if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
  24.             Notification notification = new Notification.Builder(this)
  25.                 .setContentTitle("App")
  26.                 .setContentText("Активирован фоновый режим!")
  27.                 .setSmallIcon(android.R.drawable.ic_dialog_info).build();
  28.             startForeground(ID,notification);
  29.             type = LayoutParams.TYPE_APPLICATION_OVERLAY;
  30.         }else{
  31.             type = LayoutParams.TYPE_PHONE;
  32.         }
  33.         LayoutParams lp = new LayoutParams(
  34.             LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,
  35.             type,
  36.             WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
  37.             PixelFormat.TRANSLUCENT
  38.         );
  39.         lp.gravity = Gravity.CENTER;
  40.         final Button btn = new Button(this);
  41.         btn.setOnClickListener(new OnClickListener(){
  42.             public void onClick(View v){
  43.                 wm.removeView(btn);
  44.                 stopSelf();
  45.             }
  46.         });
  47.         btn.setText("закрыть");
  48.         wm.addView(btn,lp);
  49.     }
  50.  
  51.     @Override
  52.     public void onDestroy()
  53.     {
  54.         stopForeground(true);
  55.         super.onDestroy();
  56.     }
  57.  
  58.     @Override
  59.     public IBinder onBind(Intent p1)
  60.     {
  61.         return null;
  62.     }
  63. }
заранее спасибо!
Изм. SuperSystem от 9.05.2021 / 12:31
9.05.2021 / 15:43  SuperSystem
Android Oreo(android 8, sdk >= 26)
10.05.2021 / 11:24  aNNiMON
А там никаких ограничений не вводили не такое?
Ответы
 
0 голосов
 
# 13.05.2021 / 06:05  SuperSystem
мой тест:

ServiceTest.zip (3.21 кб.)
 
0 голосов
 
# 12.05.2021 / 01:05  Vlad_jonson
Не уверен,но скорее всего надо добавить разрешения при запуске програмы,не только в манифесте,но и в самом коде
13.05.2021 / 05:57  SuperSystem
это всё есть.
там при установке на android 8 - не указывает что есть разрешение наложения поверх экрана!
 
0 голосов
 
# 10.05.2021 / 11:11  SuperSystem
код работает на gradle, наверное проблема в типе проекта.
Изм. Витаминыч от 12.05.2021 / 06:23
Всего: 3

Реклама

Мы в соцсетях

vk tw tg yt gt