2016-11-06 6 views
1

В моем приложении на Android 7, targetSdkVersion 24, я пытаюсь запросить разрешение на Android WRITE_EXTERNAL_STORAGE. Тем не менее, когда я запускаю приложение, он никогда не запрашивает у меня этого разрешения, и когда на моем устройстве я перехожу в Настройки> Приложения> MyApp> Разрешения, я не вижу переключения для чего-либо, связанного с WRITE_EXTERNAL_STORAGE.Нет подсказки или переключения для разрешения Android

Я что-то пропустил?

AndroidManifest.xml (полный файл on pastebin)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

MyActivity.java

int permission = activity.checkSelfPermission(perm); 
if (permission != PackageManager.PERMISSION_GRANTED) 
    activity.requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
+0

Что такое 'targetSdkVersion'? Кроме того, вы можете опубликовать весь манифест, чтобы показать, где находится ''. – CommonsWare

+0

@CommonsWare: спасибо. Я добавил ссылку на весь манифест, а 'targetSdkVersion' равен 24. – JellicleCat

+1

Разрешения для работы с Android 6.0+ в настройках> Приложения> (ваше приложение)> Разрешения", которые не совсем совпадают с вашими объяснениями. что, попробуйте полностью удалить приложение, а затем переустановите. – CommonsWare

ответ

0

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

Мое приложение имеет несколько зависимостей, которые имеют это в их AndroidManifest.xml:

<uses-permission 
     android:name="android.permission.WRITE_EXTERNAL_STORAGE" 
     android:maxSdkVersion="18" /> 

Что это делает автоматически отказывать в разрешении WRITE_EXTERNAL_STORAGE если SDK выше, чем 18. Это согласуется с вопросами, я получаю; Разрешение лишается и даже не запрашивает пользователя.

Затем я проверяю, добавив это мой App AndroidManifest.xml в попытке переопределить Либерал параметры разрешения зависимостей:

android:maxSdkVersion="25" 

Затем он не может строить из-за слияния конфликта на masSdkVersion. Это еще раз подтверждает мои подозрения по этому вопросу; андроид: maxSdkVersion, распространяемый в модуль App.

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

Так что я протестировал запрос READ на моем приложении и AndroidManifest.xml, это работает, но я думаю, что это глупо.

Я обновлю, когда найду подходящий способ разрешения.