Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为应用程序'创建意向过滤器;内用_Java_Android_Android Intent - Fatal编程技术网

Java 为应用程序'创建意向过滤器;内用

Java 为应用程序'创建意向过滤器;内用,java,android,android-intent,Java,Android,Android Intent,我想创建一个带有意图过滤器的活动,用于共享图像。 但我希望该活动仅在共享意图来自我自己的应用程序时可用,即: 如果从其他应用程序启动共享意图,则“我的共享活动”不会显示在“意图选择器”中 如果从我的应用程序中启动共享意图,共享活动将出现在其他共享目标中,如Gmail、SMS等 我已尝试设置exported=false,但它仍然可以从外部访问 <activity android:name=".ShareTestActivity" android:l

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

  • 如果从其他应用程序启动共享意图,则“我的共享活动”不会显示在“意图选择器”中
  • 如果从我的应用程序中启动共享意图,共享活动将出现在其他共享目标中,如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>


我怎样才能解决这个问题?谢谢你

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


当你达到这个目的,然后按照你想要的方式构建选择器。这是为了查询原始的android.intent.action.SEND+和其他数据,然后构建要附加到选择器的数据。在需要时使用Intent.createChooser()。

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


当你达到这个目的,然后按照你想要的方式构建选择器。这是为了查询原始的android.intent.action.SEND+和其他数据,然后构建要附加到选择器的数据。在需要时使用Intent.createChooser()。

我已经向谷歌抱怨过他们忽略与您的场景相关的导出状态/权限的做法,我被告知它正在按预期工作。所以,尽管我认为你的方法是可行的,但它不会。也就是说,假设您正在使用
Intent.createChooser()
启动
操作\u SEND
选项,则应该允许您添加活动。摆脱你的
,在数组中的活动中使用明确的
意图
,以获得
额外的初始意图
。谢谢你的建议。通过这种方法,额外的初始意图活动会出现在另一个活动之前,我希望所有选项都处于同一级别,保持字母顺序等。如何组合这两个意图?好吧,您必须使用
PackageManager
querytentActivities()
,实现您自己的选择器,诸如此类。我已经对谷歌大肆抱怨他们忽略了与您的场景相关的导出状态/权限的做法,我被告知它正在按预期工作。所以,尽管我认为你的方法是可行的,但它不会。也就是说,假设您正在使用
Intent.createChooser()
启动
操作\u SEND
选项,则应该允许您添加活动。摆脱你的
,在数组中的活动中使用明确的
意图
,以获得
额外的初始意图
。谢谢你的建议。通过这种方法,额外的初始意图活动会出现在另一个之前,我希望所有选项都处于同一级别,保持字母顺序,等等。如何组合这两个意图?好吧,您必须使用
PackageManager
querytentActivities()
,实现自己的选择器。