如何检查测试意图是否可以解析为活动?

时间:2017-12-11 19:50:15

标签: android android-intent android-activity mime-types android-package-managers

我正在尝试确定Intent是否可以解析为我的应用程序中的Activity。

我有一个用户可以下载的文件列表。单击其中一行将启动通知,然后进行网络呼叫以实际下载该文件。我想在进行网络调用以实际下载文件之前检查文件是否可以解析为Activity。我决定创建一个测试意图(因为我实际上还没有该文件),使用该文件的扩展名。问题是,在pdf的情况下,它返回false,即使我删除了检查,文件也会在模拟器上打开,看起来像Google Drive或其他文件浏览器。

以下是我如何创建我的"测试"意图:

Intent downloadTestIntent = new Intent(Intent.ACTION_VIEW);
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase())
downloadTestIntent .setType(mimeType);

以下是我使用Intent执行的检查,看它是否可以解析为Activity:

public boolean canResolveIntent(Activity activity, Intent intent)
{
    PackageManager packageManager = activity.getPackageManager();
    List activities = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return activities.size() > 0;
}

我错过了什么吗?我希望检查返回true。正如我之前提到的,在我下载文件之前我实际上没有文件,但我想防止不必要的电话。

0 个答案:

没有答案