繁体   English   中英

ACTION_GET_CONTENT给出错误的路径

[英]ACTION_GET_CONTENT gives wrong path

我正在使用ACTION_GET_CONTENT,以便用户可以选择其余代码可以读取和处理的文本文件。

Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("text/*");
startActivityForResult(Intent.createChooser(intent, "select data"), SELECT_DATA);

上面是我的代码,以便用户可以浏览正常运行的代码。

Uri DataUri = data.getData();
File FileUri = new File(DataUri.getPath());

如果在使用getPath或getAbsolutePath之后将DataUri或FileUri转换为字符串,则会得到完全错误的路径。

路径应该是/ storage / emulated / 0 / Documents / myFile,但是它给了我/ document / primary:Documents / myFile。 我不知道这个“主要:文档”是什么。

来自意图本身的数据已经具有错误的路径,有什么建议吗?

我正在使用ACTION_GET_CONTENT,以便用户可以选择文本文件

不,您正在使用ACTION_GET_CONTENT以便用户可以选择MIME类型为text/*某些内容。 内容的来源很大程度上取决于用户。 它可能是文件系统上的文件,也可能不是,如果是,则可能是您可以直接访问自己的文件(例如,Dropbox应用程序的内部存储,Android 4.4+设备上可移动存储中的文件) )。

路径应为/ storage / emulated / 0 / Documents / myFile

不,不应该。

但这给了我/ document / primary:Documents / myFile

您得到的结果将随处理ACTION_GET_CONTENT请求的活动而变化。 该活动将取决于用户所安装的支持ACTION_GET_CONTENT内容以及用户从该已安装内容列表中选择的内容。

通常情况下,你会得到一个content Uri (即getScheme()Uri将返回content ),作为Uri将指向由所服务的数据ContentProvider

来自意图本身的数据已经具有错误的路径

它具有正确的路径。 它根本不是文件系统上的路径。

有什么建议么?

使用ContentResolveropenInputStream()获取由content Uri表示的contentInputStream

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM