Опция наложения экрана включена по умолчанию, если приложение загружено из магазина игр
С 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 всегда выполняется. Если предположить, что я выпускаю приложение в магазине Play, то оно не будет работать, если пользователь вручную отключит оверлейный экран?
Можем ли мы проверить это поведение, не загружая приложение из playstore?
3 ответа
Да ты прав. SYSTEM_ALERT_WINDOW
разрешение всегда предоставляется, когда приложение установлено из Play Store. Посмотрите на другой ответ, уже предоставленный в Stackru, который подтверждает, что:
SYSTEM_ALERT_WINDOW - Как автоматически получить это разрешение на Android 6.0 и targetSdkVersion 23
Однако имейте в виду, что он работает только для Play Store. Если вы хотите опубликовать приложение в Samsung Store или Amazon Store, у вас могут возникнуть проблемы с этим.
Также взгляните на другой вопрос, где Toast
был идентифицирован как представление, которое может вызывать похожие проблемы на некоторых устройствах:
Обнаружение наложения экрана блокирует разрешения Android
Надеюсь, что этот ответ прояснит некоторые ваши проблемы.
In the official android documentation, it says:
Примечание. Если приложение предназначено для уровня API 23 или выше, пользователь приложения должен явно предоставить это разрешение приложению через экран управления разрешениями.
На основании документации для SYSTEM_ALERT_WINDOW
это разрешение классифицируется как
Protection level: signature
А также
Примечание. Если приложение предназначено для уровня API 23 или выше, пользователь приложения должен явно предоставить это разрешение приложению через экран управления разрешениями.
На ваш вопрос:
Я где-то читал, что если приложение загружается из магазина игр, то по умолчанию опция наложения экрана включена.
На основании документации по предоставлению разрешений для разрешений на уровне подписи:
Система предоставляет эти разрешения приложения во время установки, но только в том случае, если приложение, которое пытается использовать разрешение, подписано тем же сертификатом, что и приложение, которое определяет разрешение.
Поскольку ваше приложение не будет подписано тем же сертификатом, что и системные, разрешение Overlay не будет предоставлено вашему приложению во время установки.
Я бы порекомендовал вам сохранить проверку как есть.