Android 如何打开我的应用程序&x27;s外部/共享存储目录
我有一个通知,显示下载文件的进度。完成后,点击它会打开保存文件的目录(我的应用程序的外部存储目录)。意图是通过以下方式建立的,随后会传递给悬挂式帐篷Android 如何打开我的应用程序&x27;s外部/共享存储目录,android,file,directory,file-browser,Android,File,Directory,File Browser,我有一个通知,显示下载文件的进度。完成后,点击它会打开保存文件的目录(我的应用程序的外部存储目录)。意图是通过以下方式建立的,随后会传递给悬挂式帐篷 val dir = getExternalFilesDir("storage") val intent = Intent(Intent.ACTION_VIEW) intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION intent.data = FileProvider.getU
val dir = getExternalFilesDir("storage")
val intent = Intent(Intent.ACTION_VIEW)
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
intent.data = FileProvider.getUriForFile(context, authority, dir)
intent.type = DocumentsContract.Document.MIME_TYPE_DIR
实际发生的情况-文件资源管理器打开,但显示“最近”目录(?)
我还尝试了什么:
- 传递绝对路径而不是内容URI,但这没有什么区别
- 将type设置为“/”,然后它会选择打开目录的应用程序,但结果最终是相同的——“最近的”
- 改为使用ACTION\u OPEN\u DOCUMENT intent,查看它是否也有相同的问题,是的,它还指向“最近”
val dir = getExternalFilesDir("storage")
val intent = Intent(Intent.ACTION_VIEW)
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
intent.data = FileProvider.getUriForFile(context, authority, dir)
intent.type = DocumentsContract.Document.MIME_TYPE_DIR
FileProvider
不支持目录<默认情况下,代码>操作\视图不支持目录,尽管某些文件管理器可能支持<代码>文档合同与文件提供程序
无关
传递绝对路径而不是内容URI,但这没有什么区别
这将导致应用程序崩溃,出现
FileUriExposedException
1。明确地说,我所说的“应该”只是指这是期望的结果。2.DocumentsContract指定目录mime类型,因此意图自动打开文件浏览器应用程序,而不是显示应用程序选项。3.但是它没有…@Serge:“DocumentsContract指定了目录mime类型,因此它会自动打开文件资源管理器应用程序”--仅适用于带有关注该mime类型的“文件资源管理器”应用程序的设备。有成千上万的安卓设备型号。你计划测试多少人?这也没有改变FileProvider
不支持目录的事实。我以前听过这个论点,但到目前为止它似乎还不是一个问题,加上所有的源代码都很旧,现在它仍然是一个问题吗?@Serge:我不会假设ACTION\u VIEW
对于任何设备上的任何MIME类型都是可靠的。即使是像“打开浏览器”这样简单的操作,您也会遇到问题(例如,由于在受限配置文件中运行或由于设备所有者策略,用户无法访问Web浏览器)。我决不会假设非官方MIME类型的ACTION\u VIEW
可以工作,而vnd.android.document/directory
是。设备制造商可以随心所欲。如果FileProvider不支持目录,您是什么意思?它只用于获取目录的(内容)uri,正如我在文章中所指出的,它提供得很好。uri不支持目录吗?