1

私の Android アプリでは、Instragram API から読み込まれた画像があり、次のような一般的な共有インテントを介して共有しています。

Intent share = new Intent(Intent.ACTION_SEND);
share.setType("image/jpeg");
Uri uri = Uri.fromFile(file);
share.putExtra(Intent.EXTRA_STREAM,uri);

startActivity(Intent.createChooser(share, "Share Image"));

デフォルトでは、このインテントを処理するすべてのインストール済みアプリのリストが表示されます。これには、画像の元のソースである Instagram が含まれます。このリストをフィルタリングして、Instagram アプリのみをインテントの処理から除外し、残りをすべて残すにはどうすればよいですか?

4

2 に答える 2

1

このコードを使用して、instagram の shareintent をフィルタリングしました。

List<Intent> targets = new ArrayList<Intent>();
Intent template = new Intent(Intent.ACTION_SEND);
template.setType("text/plain");
List<ResolveInfo> candidates = this.getPackageManager().
queryIntentActivities(template, 0);

// remove all intent except instagram in share intent
for (ResolveInfo candidate : candidates) {
    String packageName = candidate.activityInfo.packageName;
    if (packageName.contains("instagram")) {
       Intent target = new Intent(android.content.Intent.ACTION_SEND);
       target.setType("text/plain");
       target.putExtra(Intent.EXTRA_TEXT, "Text to share"));
       target.setPackage(packageName);
       targets.add(target);
    }
}
Intent chooser = Intent.createChooser(targets.remove(0), translate("Share Via"));
chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, targets.toArray(new Parcelable[]{}));
startActivity(chooser);
于 2016-04-23T05:55:43.667 に答える