是否可以在Intent AppChooser中隐藏一些应用程序?

时间:2013-10-22 07:45:48

标签: android android-intent

我想要的是在我的应用程序中打开PDF文件时隐藏WebBrowser。我想只显示PDF阅读器应用程序,如果没有则显示警告信息。

现在我可以创建AppChooser对话框,但我不知道如何隐藏某些应用程序。

非常感谢!

2 个答案:

答案 0 :(得分:8)

在启动选择器之前,您必须查询可用的应用程序。您需要了解有关要排除的应用的信息。例如,包名称

Intent pdfIntent = ...;
PackageManager pm = getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(pdfIntent, 0);

List<Intent> targetPDFIntents = new ArrayList<Intent>();
for (ResolveInfo currentInfo : activities) {
    String packageName = currentInfo.activityInfo.packageName;
if (!"pageToExclude".equals(packageName)) {
        Intent targetPdfIntent = new Intent(android.content.Intent.ACTION_VIEW, exportData);
        targetPdfIntent.setPackage(packageName);
        targetPDFIntents.add(targetPdfIntent);
    }
}

Intent chooserIntent = Intent.createChooser(targetPDFIntents.remove(0), "title");               
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetPDFIntents.toArray(new Parcelable[] {}));
startActivity(chooserIntent);

通过它,您可以使用包的显式活动列表启动选择器。并且所有这些都可以处理在第一行中创建的IntentType pdfIntent。

答案 1 :(得分:0)

我认为您必须尝试使用​​explicit intent打开PDF阅读器(如Abode one),捕获异常然后显示警报消息。