仅在ACTION_SEND的特定应用程序中添加可见的操作?

时间:2011-12-29 13:37:34

标签: android android-intent

我正在使用:

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("image/jpeg");
(...)

分享我的应用中生成的图片。我想将自定义操作(将图像保存到图库)添加到由

创建的意图中
Intent.createChooser(i, "...");

我正在考虑使用intent-filter为android.intent.action.SEND操作添加活动,但这会使我的活动可见并且可供所有应用程序使用。我可以将setType(“image / jpeg”)更改为setType(“image / *”)并添加

<data android:mimeType="image/foobar">

进行intent-filter,但这会使我的活动对所有要求image /*的应用程序可见。

有没有办法通过调用者包名称(或其他可以将我的应用程序与其他应用程序区分开来)来过滤操作可见性?

1 个答案:

答案 0 :(得分:2)

Android为此要求提供了一个很好的解决方案,其技巧是Intent.EXTRA_INITIAL_INTENTS

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpeg");

List<Intent> myAddedIntents = new ArrayList<Intent>();
Intent myIntent = new Intent(...);
myAddedIntents.add(myIntent);

Intent chooserIntent = Intent.createChooser(intent, "Send via:");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
        myAddedIntents.toArray(new Parcelable[] {}));

startActivity(chooserIntent);