我正在使用以下代码调用文件选择器:
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)上进行测试
答案 0 :(得分:1)
我正在使用以下代码调用文件选择器:
这不是文件选择器。它选择内容。
在onActivityResult方法中,我创建了一个File对象,其中包含通过
获取的路径
从未可靠地工作过。 Android 4.4及更高版本相当不可靠。在这种情况下,data
是Uri
。 Uri
指向内容,就像此Web浏览器中的URL指向内容一样。 Uri
根本不需要指向文件,更不用说应用可以访问的文件了。
要访问Uri
代表的内容,请使用ContentResolver
。特别是,openInputStream()
会在InputStream
指向的内容上返回Uri
。