Панель настроек автоматического отзыва разрешений отсутствует в некоторых приложениях (Android 11 API / System)

#android #kotlin #permissions #android-manifest #android-permissions

#Android #kotlin #разрешения #android-манифест #android-разрешения

Вопрос:

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

Но кажется (https://issuetracker.google.com/issues/170968725 ) что новый атрибут манифеста » autoRevokePermissions » не работает (больше или на данный момент, я не знаю, потому что он новый для API lvl 30, но он также не работает и обходится системой …).

Итак, я пытаюсь запросить разрешение пользователя на это действие, как описано здесь: https://developer.android.com/guide/topics/permissions/overview#auto-reset-permissions-unused-apps

Моя проблема в том, что в некоторых приложениях этот раздел настроек полностью отсутствует. При переходе к настройкам разрешений нет переключателя или информации. Я устанавливаю их из Android Studio, я обновил targetSdkVersion для всех, конфигурации кажутся похожими…

Кто-нибудь знает, почему я сталкиваюсь с этой проблемой?

Есть ли третий способ отключить этот новый параметр? Я пытаюсь, packageManager.setAutoRevokeWhitelisted но java.lang.SecurityException: Caller must either hold android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS or be the installer on record … и не знаю, как это сделать)

Спасибо за возможные ответы, подсказки или обходы ^^

(и действительно извините за плохой английский;)

Комментарии:

1. Я столкнулся с той же проблемой. Кто-нибудь знает, почему? Может ли это противоречить другому разрешению или sth?

2. Официальный ответ от команды разработчиков Google: когда переключатель отключен от настроек, кажется, что приложение уже занесено в белый список (подробности и источник в ответе ниже)

3. Я смущен, потому что они отвечают мне по-другому: «Пожалуйста, протестируйте его в следующем публичном выпуске и сообщите нам, если у вас все еще возникают проблемы». issuetracker.google.com/issues/182822816

Ответ №1:

Я получил официальный ответ от команды разработчиков Google :

«Переключатель отключен для некоторых приложений, выполняющих фоновую службу, включая приложения администратора устройства Всякий раз, когда переключатель скрыт / отключен, приложение уже освобождается от автоматического отзыва«

Источник : https://issuetracker.google.com/issues/172325509

Моя проблема, наконец, решена сама собой!

Комментарии:

1. Спасибо за упоминание. Я столкнулся с этой проблемой с приложением администратора устройства, в котором есть фоновые службы.

Ответ №2:

Пожалуйста, попробуйте выполнить следующие действия:

1.setAutoRevokeWhitelisted:

 PackageManager pm = getPackageManager();
pm.setAutoRevokeWhitelisted(getPackageName(), true);
boolean result = pm.isAutoRevokeWhitelisted(); // result should be true
  

2.in AndroidManifest.xml:

 <uses-permission android:name="android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS" />
  

3. подпишите свое приложение с помощью ключа платформы (см. Пример), используйте в приложении build.gradle:

 signingConfigs {
        sign_platform {
            keyPassword 'android'
            storeFile file('platform.keystore')
            storePassword 'android'
            keyAlias 'platform'
        }
}

defaultConfig {
   signingConfig signingConfigs.sign_platform
}
  

Комментарии:

1. или установите ее в настройках вашего устройства: Настройки-> Приложения -> YourApp -> Разрешения -> Удалить разрешения, если приложение не используется

2. Полезно знать, что функции системных приложений можно эмулировать таким образом, но опубликовать приложение в Play Store таким образом невозможно.

3. Привет, я уже пробовал шаги 1 и 2, но мне кажется, что существует внутренняя и, возможно, плохо документированная механика, которая скрывает раздел настроек, когда приложение автоматически попадает в белый список (более подробная информация и источник в ответе ниже)