无法在小米上获取文件流

时间:2017-11-15 09:44:03

标签: android android-intent

我已经建立了一个博客客户端,您可以在其中从图库中选择照片以嵌入博客帖子。

出于某种原因,它在大多数手机上都不适用于小米手机。

我以这种方式从图库中挑选文件:

Intent i = new Intent();
i.setType("image/*");
i.setAction(Intent.ACTION_GET_CONTENT);
i.addCategory(Intent.CATEGORY_OPENABLE);

startActivityForResult(i, 2);

我在选择后使用以下内容加载图片:

String imagePath=data.getData().ToString();
Uri fileURI = Uri.parse(imagePath);
 try {
      fileInputStream = ((Context)mView).getContentResolver().openInputStream(fileURI);
 } catch (Exception e) {
/* Send logs to analyse later */
 }

导致某些手机出现以下错误

Non-fatal Exception: java.io.FileNotFoundException: file:/storage/emulated/0/Download/FILE_NAME.png: open failed: ENOENT (No such file or directory)
       at libcore.io.IoBridge.open(IoBridge.java:456)
       at java.io.FileInputStream.(FileInputStream.java)

我只是让用户在获得Marshmallow +版本的许可后尝试选择文件,因此这不是权限问题。

它适用于95%的用户,所以这是非常具体的。 试图在LG G2,华为Nova,Nexus 7和仿真器图像上重现4.2,4.4,5.0.2,7.0.2的问题,我无法重现它。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在onActivityResult()中使用

  InputStream is = getContentResolver().openInputStream(data.getData());

不要试图找到文件。

将输入流用作文件输入流。