0

以前 startActivityForResult はギャラリーから写真を選んで onActivityResult 、結果を表示するために使用していました。getPath() その画像のソースを設定するためにパスを別のアクティビティに送信するインテント結果を使用する と、パスが正しくなく、画像がそこにない別の方法です。

写真はsdcardにあり、次の場所にあります:「mnt/sdcard/pictures/lambo」----しかし getpath() 、彼の返品:「external/images/media/17」

フォトピッカー :

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);
            }
        }
    }
4

1 に答える 1

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);
}
于 2013-09-15T09:03:52.063 に答える