代码之家  ›  专栏  ›  技术社区  ›  Addev

创建用于应用程序内部使用的意向过滤器

  •  1
  • Addev  · 技术社区  · 10 年前

    我想创建一个带有 intent-filter 用于共享图像。 但我希望该活动仅在共享意图来自我自己的应用程序时可用,即:

    • 如果从其他应用程序启动共享意向,我的ShareActivity不会出现在意向选择器中
    • 如果从我的应用程序启动了共享意向,则ShareActivity会出现在Gmail、SMS等其他共享目标中。

    我已尝试设置 exported=false 但它仍然可以从外面进入

        <activity
            android:name=".ShareTestActivity"
            android:label="ShareTest"
            android:exported="false">
            <intent-filter>
                <action android:name="android.intent.action.SEND" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:mimeType="image/*" />
            </intent-filter>
        </activity>
    

    我如何解决这个问题?非常感谢。

    1 回复  |  直到 10 年前
        1
  •  2
  •   jtt    10 年前

    实现你所追求的目标的唯一方法是有效地创建你自己的选择者。按照你想要的方式构建它。您还需要做的是将操作更改为com.myapp.action。发送(或其他一些独特的动作),以便 可以显式地处理该意图。

    当你有了这个意图,然后按照你想要的方式构建选择器。这是查询原始android.intent.action。发送+其他数据,然后构建附加到选择器的数据。使用意图。需要时创建Chooser()。