【发布时间】:2017-02-08 10:41:23
【问题描述】:
我想选择 sdcard 中存在的文件不在内部存储中 并将其上传到服务器,但我无法获取其获取其大小的路径。我已经开始使用以下代码选择文件:
intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
String[] mimetypes = {"application/*"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(
Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE);
为了获取文件的路径,我正在使用this answer,除非用户从 sdcard(可移动)中选择任何文件,否则它的工作原理。当我调试代码并发现 type 不是 primary 所以它不会进入这个条件:
if("primary".equalsIgnoreCase(type)){
return Environment.getExternalStorageDirectory() + "/" + split[1];
}
所以我的问题是它会是什么?即如果类型不是主要的怎么办?在这种情况下我们如何获得文件路径?我搜索了很多问题和教程,其中没有其他内容。我也尝试过 this answer 的其他部分,但它不起作用,因为 System.getenv() 为“SECONDARY_STORAGE”返回 null,为“EXTERNAL_STORAGE”。尝试时出现文件未找到异常:
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
}else{
return System.getenv("EXTERNAL_STORAGE") + "/" + split[1];
}
文件的 Uri 和文档 ID 如下所示:
Uri:content://com.android.externalstorage.documents/document/0EF9-3110%3Adevice-2016-12-02-130553.png
docId:0EF9-3110:device-2016-12-02-130553.png
有什么帮助吗??
【问题讨论】:
-
您的问题已被多次报告。我认为最后几个月的每个星期。所以只要阅读这个网站。此外,您应该解释为什么需要文件路径。您几乎可以对您获得的内容方案执行相同的操作。
-
@greenapps 我已经搜索并发布了链接。如果您有任何与我的问题相关的链接,请分享它
-
my question is what will be it's else?。你的意思是“类型”?好吧,你可以告诉! -
你没有告诉你需要什么文件系统路径。
-
@greenapps 立即查看
标签: android file path uri android-6.0-marshmallow