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

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

Solutions Collecting From Web of "Трансляция действия по изменению разрешения в android M"

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

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

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

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

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

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

Но когда пользователь отменяет это разрешение между нашими приложениями

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