Подтвердить что ты не робот

Трансляция действия по изменению разрешения в android M

Применяет ли приложение какое-либо широковещательное сообщение или какое-либо предупреждение, когда его настройки разрешения изменены из "Настройки"? У меня есть сценарий, когда мы запускаем какой-то журнал, когда приложение запускается и имеет разрешения LOCATION GROUP. Но когда пользователь отменяет это разрешение между нашими приложениями, происходит сбой. Не найти способ остановить регистрацию, когда пользователь отменяет ее. Это ведение журнала происходит из сторонней библиотеки, поэтому мы не можем также проверять наличие проверки проверки.

4b9b3361

Ответ 1

Применяет ли приложение какое-либо широковещательное сообщение или какое-либо предупреждение, когда его настройки разрешения изменены из "Настройки"?

Не документировано.

Если пользователь отменяет ранее предоставленное вам разрешение, ваш процесс будет прекращен. Когда вы в следующий раз запустите, вы узнаете об изменении разрешения как части проверки разрешений.

Если пользователь предоставляет разрешение, которое ранее было отклонено, ваш процесс не прекращается. Однако еще раз, когда вы вызываете checkSelfPermission(), вы узнаете, что у вас есть доступ.

Урок здесь: не кэшировать результаты поиска разрешений. Они кажутся довольно дешевыми вызовами, поэтому просто звоните checkSelfPermission() по мере необходимости.

Если ваш targetSdkVersion ниже 23, checkSelfPermission() не поможет, но вы должны получать фиктивные данные, а не SecurityException. В случае исправлений местоположения вы не должны получать какие-либо местоположения, если пользователь отменил разрешения на доступ к местоположению.

Но когда пользователь отменяет это разрешение между нашими приложениями, аварийные сообщения

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