2017-01-18 8 views
0

Я тестирую мое приложение на галактики S5 с API 22 и Nexus 6P с API 25. Мое приложение компилируется с 23.разрешение файла отказано

Я пытаюсь читать изображения из файла ÖBB как:

Bitmap bmImg = BitmapFactory.decodeFile(obbPath+"img1.jpg")); 

Когда я бег на моей Nexus 6P нет никакой проблемы, однако с галактикой S5 дает ошибку:

01-18 14:42:36.007 14032-14032/com.nick.app E/BitmapFactory: 
Unable to decode stream: java.io.FileNotFoundException: 
/mnt/obb/8a0cd43307e4b1f6568009da3580d11f/img1.jpg: open failed: EACCES (Permission denied) 

В моем андроиде манифеста я объявил разрешение, как показано ниже:

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

Эта ошибка меня смущает, что на старом устройстве и не новее с новыми разрешениями во время выполнения, которые я имею не реализованы. Какие-либо предложения?

ответ

0

My app is compiled with 23.

Это не имеет значения, что ваш compileSdk, однако важно то, что устанавливается в качестве targetSdk. Если это 23 или выше, то ваши разрешения для манифеста не имеют значения, если вы запустите приложение на Android 6.0 или новее, так как в этом случае вы должны должны поддерживать разрешения во время выполнения как documented here.

Есть несколько библиотек, которые могут упростить задачу реализации права доступа во время выполнения, но если вы действительно не нужны какие-либо из API23 + функций в вашем приложении, вы должны быть в состоянии просто ниже targetSdk к т.е. 22, а затем ваши явные разрешения честь на любой платформе.

+0

My 'targetSdkVersion' установлен в 21 – ez4nick

0

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