gpt4 book ai didi

java - Android使用 Intent 打开外部目录

转载 作者:搜寻专家 更新时间:2023-11-01 09:19:29 25 4
gpt4 key购买 nike

在 Android 中没有直接或明确的方式来隐含打开文件夹/目录的 Intent 。具体来说,我想在这里打开 getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)

我尝试了这些,但它们只会打开一个 FileManager 应用程序,而不是我想要的目录:

val directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
val uri = Uri.parse(directory.path)
val intent = Intent(Intent.ACTION_GET_CONTENT)
intent.setDataAndType(uri, "*/*")
startActivity(Intent.createChooser(openIntent, "Open Folder"))

另一个例子:

val directory = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS);
val uri = Uri.parse(directory.path)
val intent = Intent(Intent.ACTION_VIEW)
intent.setDataAndType(uri, "resource/folder")
startActivity(Intent.createChooser(openIntent, "Open Folder"))

最佳答案

打开“THE”下载文件夹

如果你想打开下载文件夹,你需要使用DownloadManager.ACTION_VIEW_DOWNLOADS,像这样:

Intent downloadIntent = new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS);
downloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(downloadIntent);

无需使用 mime 类型 resource/folder,因为 Android 没有官方文件夹 mime 类型,因此您可能会在某些设备中产生一些错误。您的设备似乎不支持该 mime 类型。您需要使用上面的代码,因为它只是将您要访问的官方文件夹传递给 Intent。


编辑: 对于其他自定义目录,我认为您不能像那个那样只传递一个路径到 Intent 。我认为在 Android 中没有打开文件夹的可靠方法。


使用FileProvider(测试)

编辑:如果您正在使用 FileProvider,请尝试不只是解析 Uri,您应该使用 getUriForFile( )。像这样:

val dir = getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
val intent = new Intent(Intent.ACTION_VIEW)
val mydir = getUriForFile(context, "paste_your_authority", dir)
intent.setDataAndType(mydir, "resource/folder")
startActivity(intent);

或者不使用资源/文件夹,而是使用:

DocumentsContract.Document.MIME_TYPE_DIR

故事的寓意:

没有打开文件的标准方法。每个设备都不同,上面的代码保证在每个设备上都能正常工作。

关于java - Android使用 Intent 打开外部目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57670811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com