2013-09-15 2 views
0

Я использовал startActivityForResult, чтобы выбрать картинку из галереи, а затем использовать onActivityResult для получения результата. , когда я использую getPath() для получения результата намерения, чтобы отправить путь к другому действию, чтобы установить источник этого изображения, путь неверен и является другим способом, чтобы изображение не было там.android - метод getpath возвращает неправильный адрес

картина находится в SDCard и расположен по адресу: "мнт/SDCARD/фотографии/Ламбо" ---- но getpath() его возвращений: «внешние/изображения/СМИ/17

photopicker:

private void photopicker() { 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECT_PHOTO); 
} 

onActivityResult:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent imageReturnedIntent) { 
     super.onActivityResult(requestCode, resultCode, imageReturnedIntent); 
     switch(requestCode) { 
     case SELECT_PHOTO: 
      if(resultCode == RESULT_OK){ 
       Uri selectedImage = imageReturnedIntent.getData(); 
       String add; 
       add = selectedImage.getPath(); // don't work 
       InputStream imageStream = null; 
       try { 
        imageStream = getContentResolver().openInputStream(selectedImage); 
       } catch (FileNotFoundException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       selectedPhoto = BitmapFactory.decodeStream(imageStream); 
//    add = selectedImage.getPath(); // don't work 
       Intent intent = new Intent(MainActivity.this, PicViewer.class); 
       intent.putExtra("add", add); 
       startActivity(intent); 
      } 
     } 
    } 

ответ

1

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

public String getRealPathFromURI(Uri contentUri) { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 
Смежные вопросы