2016-04-01 2 views
2

Я пытаюсь создать изображение из фотографии этого пути:Доступ запрещен при создании растрового изображения из фотографий пути

Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath); 

И я добавил разрешение в манифесте:

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

Это отлично перед работает. Но вдруг появились проблемы, говорит:

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/image_1.jpg: open failed: EACCES (Permission denied) 

Я искал ответ в течение нескольких дней, но до сих пор не могу понять это. Я совершенно новичок в андроиде, и это мой первый пост. Надеюсь, ты поможешь мне с этим. Благодаря!

Для справки, я использую андроид-студию и genymotion. API приложения - 23.

+0

корень ваш эмулятор. это не позволяет вам прочитать файл. – Shark

+0

Возможно, разрешения для чтения форматов файлов SD-карты изменены в версиях Android? Проверьте, настроен ли вы для правильного уровня API Android. –

+0

Для 23 вы также должны реализовать разрешения времени выполнения –

ответ

3

Приложение не одобряло разрешение на запись во внешнюю память, это новая функция для Android 23 Marshmallow под названием Run time permission.

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

+0

Это работает! Большое вам спасибо за помощь :) –

0

Вы можете попробовать это.

Bitmap bitmap = BitmapFactory.decodeFile(mCurrentPhotoPath); 

в

Bitmap bitmap = BitmapFactory.decodeFile("file://"+mCurrentPhotoPath); 

Я надеюсь, что это поможет. спасибо

+0

После применения ответа @Rod_Algonquin я попробовал ваше предложение любопытством. Оказывается, это приводит к ошибке «ENOENT (Нет такого файла или каталога). –