1

私はアプリケーションを実行しており、マニフェストにインテント フィルターがあり、このインテント フィルターにはアクションがあります。

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

そしてカテゴリー

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

そして、そのインテント フィルターで宣言されたデータを含む Web ページを開始したい場合、アプリがブラウザーと共にダイアログに表示されます。

これは私が望んでいることですが、特定のボタンを押したときに、アプリを起動したくないのにダイアログに表示される場合があります。

無効にできますか?

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 に答える