Почему в некоторых приложениях по умолчанию разрешено «показывать на экране блокировки» и «отображать всплывающее окно windows при работе в фоновом режиме»? - PullRequest
1 голос
/ 07 марта 2020

Я работаю над приложением alram. Код моего приложения работает нормально. Я тестирую API своего уровня приложения 28 на телефоне MI Y3 ... У меня большая проблема в том, что у моего приложения нет некоторых разрешений, например ..

"Показать на экране блокировки" "Всплывающее окно дисплея windows при работе в фоновом режиме "

это разрешение, которое я должен разрешить приложению вручную в настройках телефона, разрешениях приложения ..... Мой вопрос заключается в том, что при установке другого приложения" Тревога "из Магазин приложений, такой как "Простой будильник", Будильник, Будильник Xtream ... эти приложения автоматически имеют вышеуказанные разрешения ... я имею в виду, что мне не нужно давать эти разрешения этим приложениям вручную.

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

действие, которое я хочу запустить, содержит этот код в onCreate перед Super.onCreate ....

{window = getWindow ();

    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE);

    if(Build.VERSION.SDK_INT<=26){
        window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        PowerManager powerM = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakeLock = powerM.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, WAKELOCK_KEY);
        wakeLock.acquire(10*60*1000L /*10 minutes*/);

    }else{
        setShowWhenLocked(true);
        setTurnScreenOn(true);
        if (keyguardManager != null) {
            keyguardManager.requestDismissKeyguard(this, null);
        }
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);
        PowerManager powerM = (PowerManager) getSystemService(Context.POWER_SERVICE);
        wakeLock = powerM.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, WAKELOCK_KEY);
        wakeLock.acquire(10*60*1000L /*10 minutes*/);
    }
}

Манифест разрешений

...