【发布时间】:2013-10-22 07:45:48
【问题描述】:
我想要的是在我的应用程序中打开 PDF 文件时隐藏 WebBrowser。我只想显示 PDF 阅读器应用程序,如果没有,则显示警报消息。
现在我可以创建 AppChooser 对话框,但我不知道如何隐藏某些应用程序。
非常感谢!
【问题讨论】:
-
尝试将类型设置为
intent.setType("applications/pdf");
我想要的是在我的应用程序中打开 PDF 文件时隐藏 WebBrowser。我只想显示 PDF 阅读器应用程序,如果没有,则显示警报消息。
现在我可以创建 AppChooser 对话框,但我不知道如何隐藏某些应用程序。
非常感谢!
【问题讨论】:
intent.setType("applications/pdf");
您必须在启动选择器之前查询可用的应用程序。而且您需要了解有关要排除的应用程序的一些信息。例如包名
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。
【讨论】:
我认为您必须尝试使用 explicit intent 打开 PDF 阅读器(如 Abode one),捕获异常然后显示您的警报消息。
【讨论】: