1

我正在做一个应用程序,我的清单中有一个 Intent Filter,这个 Intent Filter 有动作

<action android:name="android.intent.action.VIEW" />

和类别

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

并且,当我想启动一个包含在该意图过滤器中声明的数据的网页时,我的应用程序会出现在对话框中,并带有浏览器。

这就是我想要的,但在某些情况下,当我按下特定按钮时,我不想启动我的应用程序,但它会出现在对话框中。

我可以禁用它吗?

PS。对不起我的英语不好。

4

2 回答 2

2

我可以禁用它吗?

只有通过创建自己的选择器对话框,使用类似的PackageManager东西queryIntentActivities()来找出可能性,将自己从该列表中过滤出来,然后用结果构建一个对话框。

于 2012-08-10T15:56:13.517 回答
0

你可以这样,它工作得很好。

void showBrowsers() {
    List<Intent> shareIntentsLists = new ArrayList<Intent>();
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    List<ResolveInfo> resInfos = getPackageManager().queryIntentActivities(browserIntent, 0);
    if (!resInfos.isEmpty()) {
        for (ResolveInfo resInfo : resInfos) {
            String packageName = resInfo.activityInfo.packageName;
            if (!packageName.toLowerCase().contains("YOURPACKAGE_NAME")) {
                Intent intent = new Intent();
                intent.setComponent(new ComponentName(packageName, resInfo.activityInfo.name));
                intent.setAction(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                intent.setPackage(packageName);
                shareIntentsLists.add(intent);
            }
        }
        if (!shareIntentsLists.isEmpty()) {
            Intent chooserIntent = Intent.createChooser(shareIntentsLists.remove(0), "Choose Browser");
            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, shareIntentsLists.toArray(new Parcelable[]{}));
            startActivity(chooserIntent);
        } else
            Log.e("Error", "No Apps can perform your task");
    }
}
于 2017-09-21T18:01:40.067 回答