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

С 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 не будет предоставлено вашему приложению во время установки.

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

Другие вопросы по тегам