21

このアプリには、ACTION_SEND インテントを介して他のアプリケーションの共有メニューに表示できるインテント フィルターがあります。アプリ自体にも ACTION_SEND と createChooser() を使用した共有メニューがあり、私のアプリがリストに表示されます。それらはすでに私のアプリにあるので、それらを自分自身に共有できるようにするのは奇妙に思えます。

アプリから呼び出されている場合、アプリがリストに表示されないようにする方法はありますか?

4

3 に答える 3

21

これがあなたの解決策です。独自のアプリを除外する場合は、「packageNameToExclude」を ctx.getPackageName() で変更できます

public static Intent shareExludingApp(Context ctx, String packageNameToExclude, String imagePath, String text) {
    List<Intent> targetedShareIntents = new ArrayList<Intent>();
    Intent share = new Intent(android.content.Intent.ACTION_SEND);
    share.setType("image/*");
    List<ResolveInfo> resInfo = ctx.getPackageManager().queryIntentActivities(createShareIntent(text,new File(imagePath)), 0);
    if (!resInfo.isEmpty()) {
        for (ResolveInfo info : resInfo) {
            Intent targetedShare = createShareIntent(text,new File(imagePath));

            if (!info.activityInfo.packageName.equalsIgnoreCase(packageNameToExclude)) {
                targetedShare.setPackage(info.activityInfo.packageName);
                targetedShareIntents.add(targetedShare);
            }
        }

        Intent chooserIntent = Intent.createChooser(targetedShareIntents.remove(0),
                "Select app to share");
        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
                targetedShareIntents.toArray(new Parcelable[] {}));
        return chooserIntent;
    }
    return null;
}

private static Intent createShareIntent(String text, File file) {
    Intent share = new Intent(android.content.Intent.ACTION_SEND);
    share.setType("image/*");
    if (text != null) {
        share.putExtra(Intent.EXTRA_TEXT, text);
    }
    share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    return share;
}
于 2013-07-22T07:14:56.493 に答える
9

アプリから呼び出されている場合、アプリがリストに表示されないようにする方法はありますか?

経由ではありませんcreateChooser()PackageManagerただし、 andを介して独自のセレクターのようなダイアログを作成queryIntentActivities()し、そのように自分自身をフィルター処理することはできます。

于 2010-10-31T20:58:38.237 に答える
1

使用する必要があります

Intent chooserIntent = Intent.createChooser(new Intent(), "Select app to share");
于 2016-09-30T21:48:16.653 に答える