2014-01-03 4 views
1

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

Вот часть моей функции onActivityResult обратного вызова:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if(requestCode == PICK_IMAGE && data != null && data.getData() != null) { 

     Uri imageUri = data.getData(); 

     //User had pick an image. 
     Cursor cursor = getContentResolver().query(imageUri, new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, null, null, null); 
     cursor.moveToFirst(); 

     //Link to the image 
     final String imageFilePath = cursor.getString(0); 

     // imageFilePath is null 

При выполнении кода, imageUri содержит некоторые контент URI, как content:\\something, но когда я пытаюсь получить путь к файлу изображения, я получил ноль.

Как я могу получить путь к файлу изображения, который выбрал пользователь в этом случае?

Спасибо

ответ

1

Это мой код, и это работа.

Uri selectedImageURI = data.getData(); 
imageFile = new File(getRealPathFromURI(selectedImageURI)); 

private String getRealPathFromURI(Uri contentURI) { 
    Cursor cursor = getContentResolver().query(contentURI, null, null, null, null); 
    if (cursor == null) { // Source is Dropbox or other similar local file path 
     return contentURI.getPath(); 
    } else { 
     cursor.moveToFirst(); 
     int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
     return cursor.getString(idx); 
    } 
} 

Вы получите/SDCARD/ImagePath ..

Смежные вопросы