Android:无法打开特定文件夹

Posted

技术标签:

【中文标题】Android:无法打开特定文件夹【英文标题】:Android: Unable to open specific folder 【发布时间】:2017-03-12 06:14:19 【问题描述】:

我找到了以下代码来打开一个特定的目录:

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(StaticMember.APP_DIR);
intent.setDataAndType(uri, "resource/folder");
context.startActivity(intent);

但现在我面临一个问题,即只有在您的设备上安装了 ES 文件资源管理器时它才能工作,而其他文件管理器应用程序无法检测到。

如何解决这个问题?

【问题讨论】:

考虑为您的应用添加一个类似github.com/psaravan/FileBrowserView 的模块。 【参考方案1】:

首先,resource/folder 不是官方的 MIME 类型。

其次,ACTION_VIEW 用于查看一段内容。从 android 的角度来看,目录不是内容。

任何 Android 设备都不需要任何能够查看目录内容的活动。对于Intent 结构会要求这样的活动,没有官方标准。文件管理器开发人员之间可能存在一些约定(例如,无论resource/folder 应该是什么),但并不要求所有文件管理器都提供这样的活动或用户安装这样的文件管理器。

因此,您可以通过以下任一方式解决问题:

删除代码并消除功能,或

使用PackageManagerqueryIntentActivities() 查看是否有活动处理您的Intent,如果没有则正常失败

捕获ActivityNotFoundException 并在抛出时优雅地失败

不要试图依赖第三方应用程序来浏览目录,并为此实现自己的 UI,也许使用 existing third-party libraries for that

【讨论】:

我知道,我可以查看是否有任何应用程序可以处理这种 MIME 类型。主要问题是我想打开一个特定的文件夹。 @FaisalShaikh:那么不要依赖第三方应用程序来浏览您的特定文件夹,并实现您自己的 UI。 从头开始构建已经存在的东西不是一个好主意。 @FaisalShaikh:并非所有设备都存在。您是否打算强制用户安装某些特定的文件管理器,以便能够使用您的应用? 我们不能在 Android 应用中执行这么小的事情,这听起来真的很奇怪。

以上是关于Android:无法打开特定文件夹的主要内容,如果未能解决你的问题,请参考以下文章

为啥 WebView 无法打开某些本地 URL(Android)?

Android:无法在 android studio 中打开 eclipse 项目

Android - 无法打开 keycharmap 文件

Android Intent Filter:无法从预览中打开音频文件?

iOS从Files App中无法打开特定格式文件的解决(提示没有访问权限)

iOS从Files App中无法打开特定格式文件的解决(提示没有访问权限)