2016-09-20 3 views
0

У меня есть следующий код:Android файл расшифровывает возвращает нуль

Bitmap b= BitmapFactory.decodeFile(imagePath); 

где значение imagPath является/внешняя/изображения/СМИ/43426 (я прочитал его, позволяя пользователю выбрать изображение с телефона с помощью этот код:!

Uri selectedImage = imageReturnedIntent.getData(); 
imagePath = selectedImage.toString(); 

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

ответ

1

где значение imagPath является/внешний/изображений/медиа/43426

Это не how to use a Uri, в частности, один с content схеме, как ваш есть.

Либо:

  • Используйте один из многих image loading libraries available for Android, передавая им полный Uri или

  • Используйте ContentResolver и openInputStream(), а затем передать, что InputStream к BitmapFactory.decodeStream()

1

From documentation:

Декодировать путь к файлу в растровое изображение. Если указанное имя файла является нулевым или не может быть декодировано в растровое изображение, функция возвращает значение null.

С помощью LogCat или любого источника протоколирования, вы можете убедиться в том, что imagePath = "/external/images/media/43426" не на самом деле File, просто URI

Вы можете получить файл или его содержимое из URI:

Log.v(TAG, "Uri: " + data.getData().toString()); 
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData()); 
Смежные вопросы