2016-03-04 50 views
0

我做了一個應用程序。這些意圖在後,從畫廊挑選安卓獲取意圖後的圖像路徑

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(intent, 2); 

我的問題越來越文件路徑通過使用相機

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent, 1); 

2)拍攝照片

1):它有一個上傳照片2個選項onActivityResult。 是否有任何方法可以獲得new File(path)的這些路徑,還可以處理sdk級別更改?例如,直到KitKat是1類文件系統,在KitKat是其他類型之後。

+0

你見過這個鏈接嗎?http://stackoverflow.com/questions/20327213/getting-path-of-captured-image-in-android-using-camera-intent –

+0

只需片刻我會試試 – test

+0

@GennadiiSaprykin對於第一種情況(ACTION_IMAGE_CAPTURE)效果不錯,但是從圖庫中挑選會導致所有測試用例崩潰 – test

回答

0

我的問題是獲取onActivityResult中這些意圖後的文件路徑。

由於您沒有提供EXTRA_OUTPUT,因此將不存在ACTION_IMAGE_CAPTURE方法的文件路徑。如果您確實提供了EXTRA_OUTPUT,那麼您已經知道文件路徑是什麼。

ACTION_PICK沒有文件路徑,因爲沒有要求用戶在您有權訪問的文件中選擇的內容。例如,它可能是可移動存儲上的圖像。使用ContentResolveropenInputStream()等方法獲取您給出的Uri所代表的內容。

+0

onActivityResult將我從Ga中選擇的文件的Uri返回給我llery,對不起,如果我已經解釋過上面的錯誤,但我的意思是根據該Uri – test

+0

@test獲取正確的文件路徑:再次,沒有辦法獲得您可以訪問的文件路徑。使用'ContentResolver'和類似'openInputStream()'的方法來獲取由你給出的'Uri'表示的內容。 「onActivityResult將我從Gallery中選擇的文件的Uri返回給我」 - 僅當您認爲「ACTION_PICK」方案是「從圖庫中選擇」時纔是。沒有記錄'ACTION_IMAGE_CAPTURE'來返回'Uri',因此大多數相機應用程序不會返回'Uri'。 – CommonsWare

0

如果可以的話可以從相機獲取路徑則Intent.ACTION_PICK您可以使用data.getData()直接獲取圖像的URI,然後您可以使用此方法(如在由Gennadii Saprykin

public String getRealPathFromURI(Uri uri) { 
Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
cursor.moveToFirst(); 
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
return cursor.getString(idx); } 
提供的鏈接,建議獲取文件路徑