2015-10-05 3 views
8

Есть ли способ получить обратные вызовы, если пользователь отменяет разрешения из настроек после их предоставления?Обратный звонок Android Marshmallow, когда пользователь отменяет разрешения от настроек?

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

Рассмотрим следующий сценарий, у меня есть приложение для обработки видео, которое необходимо разрешение на чтение и запись для хранения. Задача обработки обычно составляет порядка секунд. Предполагая, что пользователь дал разрешения при запросе и отменил их после начала обработки. В этом случае мы можем получить обратные вызовы, а не проверять каждый раз? Просто так, чтобы мы могли обработать случай ошибки изящно.

+0

Не можете ли вы просто поймать исключение? – Pablo

+0

Я мог бы это сделать. Интересно, есть ли лучший способ сделать это. – LostPuppy

+1

Почему это не очень хорошо? Исключения для этого: исключительные ситуации. – Pablo

ответ

5

Есть ли способ получить обратные вызовы, если пользователь отменяет разрешения из настроек после их предоставления?

Нет, потому что ваш процесс завершается. Нечего возвращать.

Предполагая, что пользователь дал разрешения на вопрос и аннулирует их после того, как начинается обработка

В этом случае ваша обработка заканчивается внезапно, когда ваш процесс завершается.

+0

В настоящее время, когда процесс заканчивается внезапно, приложение не справляется с этим по-доброму. Так было интересно, есть ли лучший способ справиться с этим, а не просто попробовать поймать повсюду. – LostPuppy

+1

@LostPuppy: нет возможности «попытаться поймать по всему месту», чтобы остановить завершение процесса. Процесс просто прекращается. Он находится в фоновом режиме (поскольку пользователь находится в Настройках), и ваше приложение может быть прекращено, когда оно находится в фоновом режиме в любой точке, операционной системой или пользователем (например, убийцами задач). Это не имеет никакого отношения к разрешениям времени выполнения, кроме того, что это еще один триггер для этого поведения. Итак, если ваше приложение не обрабатывает [завершение процесса] по-доброму », это то, что вам нужно исправить. – CommonsWare

+0

ok хорошо звучит спасибо – LostPuppy

Смежные вопросы