3

В новой версии андроида (API 23) api теперь нам нужно запросить разрешение во время выполнения. У меня есть очень серьезные сомнения, если запрашиваемое разрешение - это уровень или активность приложения. Согласно документации thisвы должны проверить, имеете ли вы это разрешение каждый раз, когда выполняете операцию, требующую этого разрешения. Значит ли это, что разрешение предоставляется на уровне приложения, но его проверка была предложена на уровне активности? Кроме того, проверка на предмет разрешения было предложено сделать следующим образом:Уровень приложения или уровень активности времени выполнения

// Assume thisActivity is the current activity 
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, 
     Manifest.permission.WRITE_CALENDAR); 

Здесь мы ясно видим, что проверка разрешения осуществляется путем передачи контекста деятельности. Если разрешение указано на уровне приложения, почему нам нужен контекст активности, а не контекст приложения? (Хотя есть вероятность, что метод внутренне получает контекст приложения из контекста активности.)

ответ

3

если разрешение запрошен уровень или активность приложения

Все разрешения для Android предназначены для всего приложения.

Значит ли это, что разрешение предоставляется на уровне приложения, но его проверка была предложена для выполнения на уровне активности?

Проверка, что вы можете получить разрешение в любом месте, через checkSelfPermission(). Запрашиваю Разрешение пользователя должно быть выполнено с помощью операции, через requestPermissions(). Получающееся разрешение на предоставление будет доступно для всего вашего приложения.

Если разрешение указано на уровне приложения, почему нам нужен контекст активности, а не контекст приложения?

Любой Context будет работать для ContextCompat методов.

+0

Целесообразно проверить все разрешения, требуемые приложением при запуске приложения? Идея заключается в запуске приложения, проверьте все разрешения, необходимые для всех действий в MainActivity, а затем продолжайте движение вперед. Я предполагаю, что это должно иметь смысл только тогда, когда мы не хотим настраивать действия на основе предоставленных разрешений. Комментарии? – Swapnil

+0

@Swapnil: «Целесообразно проверять все разрешения, требуемые приложением при запуске приложения?» - только для тех разрешений, которые требуется * приложению *. В противном случае дождитесь, пока пользователь выполнит некоторую операцию пользовательского интерфейса, которая запускает путь кода, для которого вам требуется разрешение. Например, если вы делаете снимок только в том случае, если пользователь нажимает элемент панели действий с кадром, не беспокойтесь о разрешении, пока пользователь не удалит этот элемент панели действий. См. Http://developer.android.com/training/permissions/best-practices.html#dont-overwhelm – CommonsWare

+0

Спасибо за ваши комментарии. Думаю, моему приложению нужно много разрешений, которые неизбежны. Поэтому, я думаю, я должен поставить чек в самом начале. Спасибо за ваши ответы. – Swapnil

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