无法从android文件选择器获取文件的绝对路径

时间:2016-02-22 20:56:36

标签: android filechooser

我正在使用以下代码调用文件选择器:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("*/*");
startActivityForResult(intent, 1);

在onActivityResult方法中,我创建了一个File对象,其中包含通过

获取的路径
File file=new File(data.getData().getPath());

但我观察到文件类无法识别方法getPath()返回的路径。因此,永远不会读取文件。我在网上看到的解决方案很少,但似乎都没有。路径看起来像这样

  

内容:/com.android.providers.media.documents/document/image%3A15651

我错过了什么吗?

在三星Galaxy Note 3(Android 5.1)上进行测试

1 个答案:

答案 0 :(得分:1)

  

我正在使用以下代码调用文件选择器:

这不是文件选择器。它选择内容。

  

在onActivityResult方法中,我创建了一个File对象,其中包含通过

获取的路径

从未可靠地工作过。 Android 4.4及更高版本相当不可靠。在这种情况下,dataUriUri指向内容,就像此Web浏览器中的URL指向内容一样。 Uri根本不需要指向文件,更不用说应用可以访问的文件了。

要访问Uri代表的内容,请使用ContentResolver。特别是,openInputStream()会在InputStream指向的内容上返回Uri