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

Rab*_*nok 5 android android-intent

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

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

非常感谢你!

cre*_*ity 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);
Run Code Online (Sandbox Code Playgroud)

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

  • 这个答案有2个错误:"targetPdfIntent"应该与pdfIntent几乎相同所以它应该使用copy-CTOR(几乎,因为它需要针对特定​​的活动).另外,它不应该是"targetPdfIntent.setPackage",而应该是"targetPdfIntent.setComponent(new ComponentName(packageName,currentInfo.activityInfo.name));" ,以便它能够处理同一个应用程序中可以处理此意图的多个活动的情况.否则,将显示一个奇怪的"Android系统"项目.您可以在Google-Plus应用上进行测试,例如,在共享图片时. (2认同)

lit*_*s35 0

我认为你必须尝试使用​​明确的意图打开PDF阅读器(如Abode one) ,捕获异常然后显示你的警报消息。