Плавающее представление Android с помощью WindowManager не работает в Android 6.0.1 (Marshmallow) - PullRequest
0 голосов
/ 24 сентября 2019

Мое приложение имеет плавающее представление (в верхней части экрана).

minSdkVersion равно 19, а targetSdkVersion - 29 (скомпилировано с SDK 29).

Я проверяю, работает ли мое приложение, когдаверсия для Android выше, чем Nougat (7.0).

Но только в Android 6.0.1 (Marshmallow) она вообще не работает.

Вот часть моего кода

if (checkDrawOverlayPermission()) {    
     mActivity.runOnUiThread(new Runnable() {
          @Override
          public void run() {
               mWindowManager = (WindowManager) mActivity.getSystemService(WINDOW_SERVICE);
               if (mWindowManager != null) {
                   mWindowManager.addView(mFloatView, mFloatViewLayoutParams);
               }
           }
     });

mFloatView сделан из

mFloatView = inflater.inflate(R.layout.float_view_layout, null);

Очень простой код.Только одно представление плавает.

Я думаю, что оно может быть относительным с разрешением.

Мне требуется разрешение для плавающего вида, подобного этому

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

private boolean checkDrawOverlayPermission() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this)) {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, REQUEST_CODE_DRAW_OVERLAY_PERMISSION);
        return false;
    } else {
        return true;
    }
}

Я даю разрешение на приложение какэто

enter image description here

Но это не работает в Android 6.0.1 (точнее, Galaxy Note 4).

Я буду очень признателен, если вы дадите мне только один намек.

Спасибо, что прочитали мой вопрос.

...