Как получить менеджер медиапроекции, не нарушая текущий плавающий виджет

Я разрабатываю приложение для записи экрана, которое включает плавающий виджет. Когда пользователи нажимают на него, он вызывает приведенный ниже код

MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
        Intent permissionIntent = mediaProjectionManager != null ? mediaProjectionManager.createScreenCaptureIntent() : null;
        startActivityForResult(permissionIntent, 101);

после чего я начинаю запись в методе результата активности

if (requestCode == 101) {
            if (resultCode == RESULT_OK) {
                recorder.startScreenRecording(data, resultCode, this);
            }
        }

и все работает нормально, но когда пользователи нажимают плавающий виджет, когда он находится вне приложения, диалоговое окно разрешения не появляется, чтобы начать запись, оно показывает только диалоговое окно разрешения, когда пользователь находится в приложении.

Любая идея или предложение, пожалуйста... пожалуйста...

что-нибудь, пожалуйста


person Tehleel Mir    schedule 10.04.2021    source источник
comment
developer.android.com/guide/components/activities/   -  person CommonsWare    schedule 10.04.2021
comment
Я понятия не имею, насколько твой комментарий был полезен @CommonsWare   -  person Tehleel Mir    schedule 10.04.2021
comment
В этом документе указано, что обычно вы не можете запускать действия в фоновом режиме, например, из плавающего окна, в более новых версиях Android. В нем описаны альтернативы (например, Notification) и ситуации, в которых вы можете начать действие в фоновом режиме.   -  person CommonsWare    schedule 10.04.2021
comment
этот ответ поможет мне в любом случае? stackoverflow.com/a/47082585/14599955   -  person Tehleel Mir    schedule 10.04.2021
comment
Я не знаю. Этому вопросу и ответам на него несколько лет. Они не учитывают изменения background-activity-start. Однако я также не знаю, являются ли изменения background-activity-start причиной вашей текущей проблемы. Мы не знаем, как реализован ваш плавающий виджет. В долгосрочной перспективе для таких вещей потребуется использовать подход с пузырьками, предлагаемый в Android 11+, поскольку Google продолжает ужесточать меры безопасности в отношении старых подходов (например, связанных с SYSTEM_ALERT_WINDOW).   -  person CommonsWare    schedule 10.04.2021
comment
хорошо, я реализую это, и это работает отлично, спасибо за ваше время, @CommonsWare, хорошего дня   -  person Tehleel Mir    schedule 10.04.2021