1

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

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

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

如何解决这个问题?

4

1 回答 1

0

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

第二,ACTION_VIEW用于查看一段内容。从 Android 的角度来看,目录不是内容。

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

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

  • 删除代码并消除功能,或

  • 使用PackageManagerandqueryIntentActivities()查看是否有一个活动可以处理你的Intent,如果没有则优雅地失败

  • ActivityNotFoundException如果抛出一个,则优雅地捕捉并失败

  • 不要试图依赖第三方应用程序来浏览目录,并为此实现您自己的 UI,可能使用现有的第三方库来实现

于 2016-10-29T15:34:57.660 回答