Данные, связанные с вашим возвращенным Намерением, не являются растровыми. Это URI, который вы можете использовать для поиска в MediaStore ContentProvider, чтобы получить нужное изображение. :)
Вы можете найти наиболее работающий пример на этот вопрос .
Редактировать : развернуть:
Когда вы уходите и запрашиваете MediaStore
изображение, оно не возвращает вам фактическое изображение. Он возвращает вам URI, который вы можете использовать для поиска изображения. Вот как вы переводите этот URI в реальное изображение:
Ваш URI - content://media/external/images/media/2
согласно сообщению об ошибке.
Итак, мы в основном создадим запрос и запустим его на MediaStore
ContentProvider
, который является базой данных изображений. Передайте этот URI в эту функцию:
public Bitmap loadFullImage( Context context, Uri photoUri ) {
Cursor photoCursor = null;
try {
// Attempt to fetch asset filename for image
// DATA is the column name in the database for the filename of the image
String[] projection = { MediaStore.Images.Media.DATA };
// use the URI you were given in order to look up the right image,
// and get a Cursor object that will iterate over the matching rows in the
// database.
photoCursor = context.getContentResolver().query( photoUri,
projection, null, null, null );
// since we only care about one image...
if ( photoCursor != null && photoCursor.getCount() == 1 ) {
// go to the first row that was returned
photoCursor.moveToFirst();
// get the string in the DATA column at that row
String photoFilePath = photoCursor.getString(
photoCursor.getColumnIndex(MediaStore.Images.Media.DATA) );
// Load image from path
return BitmapFactory.decodeFile( photoFilePath, null );
}
} finally {
// close up the cursor
if ( photoCursor != null ) {
photoCursor.close();
}
}
return null;
}