我正在尝试确定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。正如我之前提到的,在我下载文件之前我实际上没有文件,但我想防止不必要的电话。