当使用ACTION_GET_CONTENT意图选择图像时,我得到一个无法打开文件的URI。如果我试图打开这个文件,就像这样:
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看起来确实是一条不正确的路径,但是如何获得正确的路径呢?
我使用这个逻辑打开图像选择器:
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);并检索onActivityResult中的Uri,如下所示:
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
....
Uri uri = data.getData();我需要让文件做解码,以使它更小。
发布于 2016-03-11 14:44:36
如果我试图打开这个文件,就像这样:
对于大多数现代Android设备来说,这是行不通的。最有可能的是,您收到了一个content: Uri。这在较新版本的Android上是相当正常的。未来版本的Android可能会阻止file: Uri值。
我需要让文件做解码,以使它更小。
不需要有与给定的Uri相关联的文件。Uri可能会指出:
BLOB列中保存的字节流。使用ContentResolver和openInputStream()获取Uri指向的内容的InputStream。然后,将其传递给您的解码逻辑,例如BitmapFactory及其decodeStream()方法。
https://stackoverflow.com/questions/35942968
复制相似问题