當使用ACTION_GET_CONTENT
意圖選擇圖像時,我得到一個URI,我無法打開該文件。如果我嘗試打開該文件,就像這樣:從Uri讀取文件給出java.io.FileNotFoundException:打開失敗:ENOENT
InputStream in = new FileInputStream(new File(uri.getPath()));
它提供了以下異常:
03-11 15:14:36.132 20557-20557/my.package W/System.err﹕ java.io.FileNotFoundException: /document/image:9537: open failed: ENOENT (No such file or directory)
03-11 15:14:36.138 20557-20557/my.package W/System.err﹕ at libcore.io.IoBridge.open(IoBridge.java:456)
03-11 15:14:36.138 20557-20557/my.package W/System.err﹕ at java.io.FileInputStream.<init>(FileInputStream.java:76)
/document/image:9537
似乎的確是一個不正確的路徑,但如何得到正確的路徑?
我用這樣的邏輯來打開圖像選擇器:在onActivityResult
Intent photoPickerIntent = new Intent(Intent.ACTION_GET_CONTENT);
photoPickerIntent.setType("image/*");
photoPickerIntent.putExtra("return-data", false);
startActivityForResult(Intent.createChooser(photoPickerIntent, "Complete action using"), PICK_FROM_FILE);
和檢索烏里這樣的:
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
....
Uri uri = data.getData();
我需要的文件來完成解碼,使其小。
太棒了。我只是對這些uri的工作有誤解。 – wvdz
@wvdz:是的,最好將它們視爲不透明句柄,類似於網站的URL。 – CommonsWare