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

标签 android android-intent

我正在使用:

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

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

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

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

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

到 intent-filter,但这将使我的 Activity 对所有请求 image/* 的应用程序可见。

是否有任何方法可以通过调用程序包名称(或其他可以区分我的应用程序与其他应用程序的名称)来过滤操作可见性?

最佳答案

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);

关于android - 将仅在特定应用程序中可见的操作添加到 ACTION_SEND?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8668545/

相关文章:

java - 防止 SeekBar 和计时器在暂停时重置

android - 为什么 FPS 与原始相机应用程序不同

android - setShadowLayer() 是否适用于按钮?

java - 处理 Lollipop 中隐含的 Intent future 弃用

java - Android - 我如何从window1转到window2然后转到window3从window3跳回window1?

android - 如何确定从 Google Play 游戏回合制通知中选择的比赛

android - 如何在离线时存储数据mqtt并在在线时发送它们

java - 需要帮助完成这两项 Activity 的代码吗?

java - 具有 map 属性的 Parcelable 嵌套类会导致应用程序崩溃

android - Intent 服务派生调用显式父类(super class)构造函数