В Android 6.0 Marshmallow Google представила новую модель разрешений, которая позволяет пользователям лучше понимать, почему приложение может запрашивать определенные разрешения. Вместо того, чтобы пользователь слепо принимал все разрешения во время установки, пользователю теперь предлагается принимать разрешения по мере их возникновения в процессе использования приложения.
Когда внедрять новую модель?
полной поддержки не требуется, пока вы не выберете в своем приложении версию 23. Если вы ориентируетесь на версию 22 или ниже, ваше приложение запросит все разрешения во время установки точно так же, как это было бы на любом устройстве, работающем под управлением ОС ниже Marshmallow.
Эта информация взята отсюда :
Пожалуйста, проверьте, как реализовать, по этой ссылке :
В Android 6 (Marshmallow), даже если пользователь принял все ваши разрешения во время установки, позже он может решить отобрать у вас некоторые из этих разрешений.
Быстрое решение, но не рекомендуется: возможно, если вы измените свой targetSdkVersion в gradle на 22, проблема будет решена.
Как реализовать?(Рекомендации)
Сначала определите, является ли устройство пользователя устройством Marshmallow или нет:
После получения результатов вам нужно будет обработать их соответствующим образом.
Рекомендуемый поток разрешений:
Подробная информация:
Пользователь с устройством Marshmallow теперь будет иметь возможность отозвать опасные разрешения через настройки приложения
Android определяет некоторые разрешения как “опасные”, а некоторые - как “обычные". Оба разрешения требуются в манифесте вашего приложения, но только для опасных разрешений требуется запрос среды выполнения.
Если вы решили не внедрять новую модель разрешений (запрос во время выполнения), отзыв разрешений может вызвать нежелательный пользовательский опыт и, в некоторых случаях, сбой приложения.
В таблице ниже перечислены все текущие опасные разрешения и их соответствующие группы:
Если пользователь принимает одно разрешение в группе / категории, он принимает всю группу!
//persmission method. publicstaticvoidverifyStoragePermissions(Activity activity) { // Check if we have read or write permission intwritePermission= ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); intreadPermission= ActivityCompat.checkSelfPermission(activity, Manifest.permission.READ_EXTERNAL_STORAGE);
if (writePermission != PackageManager.PERMISSION_GRANTED || readPermission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the user ActivityCompat.requestPermissions( activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE ); } }
Чтобы использовать simply call verifyStoragePermissions(this); в onCreate. Надеюсь, это сработает.