Использование checkSelfPermission в Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Использование checkSelfPermission в Android?

Сообщение Anonymous »

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

Код: Выделить всё

if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
//ask for the location permission
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 123);

}
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
//ask for the location permission
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA);

}
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED
|| ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this,
PERMISSION_EXTERNAL, REQUEST_EXTERNAL_STORAGE);
}

if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED)
{
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_PHONE_STATE);
}
Поскольку несколько тестов для создания строки со всеми необходимыми запросами разрешений были довольно утомительными, я попробовал просто запросить разрешения, не проверяя, предоставлены ли они с помощью метода checkSelfPermision:

Код: Выделить всё

ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CAMERA,Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.READ_PHONE_STATE}, REQUEST_MULTIPLE);
И это работает, оно объединяет все разные запросы один за другим, если я перезапускаю приложение, оно не запрашивает снова, поскольку разрешения были предоставлены, и если я вручную удаляю одно из разрешений, приложение запрашивает только то, которое я удалил.

Итак, если все работает отлично без тестирования с помощью checkSelfPermission, какая польза от этого метода? Есть ли риск, который я пропустил или о котором не знаю?

Подробнее здесь: https://stackoverflow.com/questions/463 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»