如何解决如何使用Uri打开特定目录?
我想打开一个特定目录(在文件浏览器应用程序中),其中存储了由我的应用程序保存的图像。我可以通过Uri.parse(imagesDir.getAbsolutePath())
获取该目录的Uri。我尝试了this,this和其他方法,但是它什么也没做。这是我的代码到目前为止的样子:
Uri selectedUri = Uri.parse(imagesDir.getAbsolutePath());
int OPEN_REQUEST = 1337;
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setDataAndType(selectedUri,DocumentsContract.Document.MIME_TYPE_DIR);
if (intent.resolveActivityInfo(getPackageManager(),0) != null) {
startActivityForResult(intent,OPEN_REQUEST);
} else {
Log.e("MainActivity","Could not launch intent");
}
PS:imagesDir.getAbsolutePath()
的值= / storage / emulated / 0 / Draw Easy
解决方法
我想打开一个特定的目录,其中存储了由我的应用保存的图像
Android从未真正支持此功能。
我可以通过Uri.parse(imagesDir.getAbsolutePath())获取该目录的Uri。
那是无效的Uri
。最好使用Uri.fromFile(imagesDir)
。
这是我到目前为止的代码
ACTION_OPEN_DOCUMENT
does not take a Uri
in the "data" facet。
与您想要的内容最接近的是add EXTRA_INITIAL_URI
至Intent
。但是,此文档仅记录为可与您先前从Uri
或ACTION_OPEN_DOCUMENT
获得的ACTION_OPEN_DOCUMENT_TREE
一起使用。不可能在其他地方使用Uri
,例如在File
上。
SAF 是痛苦的。 Uri.fromFile(file.getAbsolutePath())
不起作用,因为返回 uri 喜欢 file://sdcard...
。但是 DocumentsContract.EXTRA_INITIAL_URI
与 content
一起使用。以下对我有用:
private void selectDir() {
Uri d = Uri.parse("content://com.android.externalstorage.documents/document/primary:Download");
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,d);
startActivityForResult(intent,PICK_WDI_FILE);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。