Опция наложения экрана включена по умолчанию, если приложение загружено из игрового магазина.

С Android 6 мы должны обрабатывать оверлейный экран в приложении, я где-то читал, что если приложение загружается из магазина игр, то по умолчанию опция оверлейного экрана включена. Я просто хочу подтвердить, это правда? Или для этого мы должны сделать дополнительное кодирование. В настоящее время я использую следующий код для включения оверлейного экрана для устройств Android 6+:

private void callOverlayScreen() {        
    if (!Settings.canDrawOverlays(this)) {          
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + BuildConfig.APPLICATION_ID));                
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        this.startActivity(intent);            
    }
}

В настоящее время мое условие if всегда истинно. Если предположить, что я выпускаю приложение в магазине игр, то оно не войдет в это состояние, пока пользователь вручную не отключит оверлейный экран?

Можем ли мы проверить это поведение, не загружая приложение из плеймаркета?


person PPD    schedule 16.04.2018    source источник
comment
I read somewhere Можете ли вы поделиться источником этой информации? Кажется не интуитивным для меня.   -  person azizbekian    schedule 20.04.2018
comment
Привет, @azizbekian, спасибо за ответ, я думаю, что это с commonsware.com/blog/ 11.05.2017/   -  person PPD    schedule 20.04.2018


Ответы (3)


Да, ты прав. Разрешение SYSTEM_ALERT_WINDOW всегда предоставляется при установке приложения из Play Store. Взгляните на другой ответ, уже предоставленный на StackOverflow, который подтверждает, что:

SYSTEM_ALERT_WINDOW – как автоматически получить это разрешение на Android 6.0 и targetSdkVersion 23

Однако имейте в виду, что он работает только для Play Store. Если вы хотите опубликовать приложение в Samsung Store или Amazon Store, у вас могут возникнуть проблемы с этим.

Также взгляните на другой вопрос, где Toast был идентифицирован как представление, что может вызвать аналогичные проблемы на некоторых устройствах:

Обнаружено наложение экрана, блокирующее разрешения Android

Надеюсь, что этот ответ развеет некоторые ваши опасения.

person R. Zagórski    schedule 22.04.2018

В официальной документации по Android говорится:

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

person Abdul Wasae    schedule 19.04.2018

Согласно документации для SYSTEM_ALERT_WINDOW, это разрешение классифицируется как

Protection level: signature

И

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

На ваш вопрос:

Я где-то читал, что если приложение загружается из магазина игр, то по умолчанию включена опция наложения экрана.

На основе документации для упрощения предоставления разрешений для разрешений на уровне подписи. :

Система предоставляет эти разрешения приложению во время установки, но только тогда, когда приложение, пытающееся использовать разрешение, подписано тем же сертификатом, что и приложение, определяющее разрешение.

Поскольку ваше приложение не будет подписано с тем же сертификатом, что и система, разрешение Overlay не будет предоставлено вашему приложению во время установки.

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

person Sagar    schedule 21.04.2018