Intereting Posts
В чем разница между getDir и getFilesDir на Android? Android Studio медленная отладка на устройстве Получение значения строки из Json Object Android Как отключить кнопку «Назад», нажатой в классе фрагментов андроида Android OpenCV Найти контуры Файл класса для android.support.v4.widget.DrawerLayoutImpl не найден на travis support-v4 21.0 Как читать местоположение только один раз с помощью locationManager (GPS и NETWORK PROVIDER) и больше не ищет обновлений местоположения? Adb обновить нерыночный apk? Android: «загрузчик классов может не работать для процессов с несколькими приложениями» Написание тестов для приложений Flow и Mortar Блокировка приложения Android телефона в режиме Портрет Android getIntent (). GetExtras () возвращает null Как ссылаться на файл в необработанной папке на Android Android: Как реализовать Parcelable для моих объектов? Как подавить уведомление о блокировке экрана в Android 5 (Lollipop), но разрешить его в области уведомлений?

Разрешение на грант, требуемое для EXTERNAL_STORAGE в Android M?

Будут ли разрешения Android WRITE_EXTERNAL_STORAGE и READ_EXTERNAL_STORAGE запускать новый диалог разрешения гранта Android M?

Solutions Collecting From Web of "Разрешение на грант, требуемое для EXTERNAL_STORAGE в Android M?"

Я согласен с ответом Гийома Перро. Я встретил аналогичный вопрос, когда я пишу разрешение READ_WRITE_EXTERNAL_STORAGE в AndroidManifest.xml

Без разрешений, появляющихся в приложении по умолчанию, людям нужно переключить кнопку переключения хранилища в разрешениях приложения. targetSdkVersion я targetSdkVersion в build.gradle до менее чем 23(MNC) и другой номер, связанный с sdkVersion , приложение С разрешениями.

Другой способ – написать функцию requestpermission в том месте, где вам нужен разрешающий. Код выглядит следующим образом:

  if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED) { //do the things} else { requestPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, AnyNumber); 

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

Я решил добавить это, если проверить версию для Android M

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1); } 

Мой ответ основан на моих тестах на M Preview SDK версии 2 с использованием эмулятора.

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

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

Однако, если вы нацелитесь на уровень api <MNC, он не будет классифицирован как опасное разрешение и, таким образом, будет предоставлен без возможности отключить его (не отображаться в настройках разрешений), и вы не сможете Компилировать код с использованием Activity.requestPermissions любом случае, поскольку SDK предварительного просмотра обеспечивает использование minSdkVersion="MNC" для использования новых API.

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

Для самого меню разрешений статус разрешения для включения включен по умолчанию, если:

  • Уровень целевого API <MNC.
  • Target API level = MNC, но вы обновляете приложение на устройстве с предыдущей установки, где целевой уровень API меньше, чем MNC.

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

Надеюсь, поможет.

Согласно документам:

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

Поэтому, поскольку READ_EXTERNAL_STORAGE попадает под PROTECTION_NORMAL, он не вызывает диалог.

Но поскольку уровень WRITE_EXTERNAL_STORAGE является PROTECTION_DANGEROUS, он будет подпадать под такое поведение, как описано в документах:

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

Вот источники для уровня защиты:

Подробный список

Согласно документам Android, вам не нужно запрашивать разрешение на чтение и запись внешнего хранилища.

Изменить: в последнем выпуске Android M вам нужно запросить разрешения на чтение и запись

Разрешение на хранение подпадает под уровень опасной защиты. Таким образом, все опасные разрешения уровня защиты не будут предоставлены во время установки в Android M, если для целевого SDK приложения установлено значение 23. Они будут указаны во время выполнения. И да, эти разрешения могут быть отменены и во время выполнения.

Диалог не будет инициирован автоматически, вам нужно сделать запрос с помощью API, например метода requestPermissions (), чтобы показать этот собственный диалог.

Пожалуйста, проверьте список разрешений на опасный уровень здесь