Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何打开我的应用程序&x27;s外部/共享存储目录_Android_File_Directory_File Browser - Fatal编程技术网

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,查看它是否也有相同的问题,是的,它还指向“最近”
注意:FileProvider设置得很好,传递给intent数据的uri是正确的。 另外请注意:如果可能的话,我希望避免将这些文件保存到“下载”中

完成后,点击它会打开保存文件的目录(我的应用程序的外部存储目录)

这从来都不是安卓系统的特点

意图是通过以下方式建立的,随后会传递给悬挂式帐篷

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不支持目录吗?