为应用内部使用创建一个意图过滤器

时间:2016-03-17 17:04:17

标签: java android android-intent

我想创建一个带有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 个答案:

答案 0 :(得分:2)

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

当您获得该意图时,请按照您希望的方式构建选择器。这是查询原始android.intent.action.SEND +其他数据,然后构建数据以附加到您的选择器。需要时使用Intent.createChooser()。