Android 注册2个活动以接收图像,它不会';从谷歌照片应用程序共享时不起作用
比如说,在我的应用程序中,用户可以发布帖子并向其他用户发送消息,&当共享文本或图像时,我想将我的应用程序注册为共享中显示的组件,我在我的Android 注册2个活动以接收图像,它不会';从谷歌照片应用程序共享时不起作用,android,android-intent,intentfilter,google-photos,Android,Android Intent,Intentfilter,Google Photos,比如说,在我的应用程序中,用户可以发布帖子并向其他用户发送消息,&当共享文本或图像时,我想将我的应用程序注册为共享中显示的组件,我在我的AndroidManifest.xml中定义了我的2个活动,如下所示(如: 当共享文本时,这个工作得非常好,在可用于共享文本的应用程序中,我看到我的应用程序的两个图标,名为MyApp(Post)&MyApp(Message) 共享图像时会出现问题,因为清单中第二个定义的标签(即MyApp(Message))只会显示一个图标,实际上它会打开清单中第一个定义的活
AndroidManifest.xml
中定义了我的2个活动,如下所示(如:
当共享文本时,这个工作得非常好,在可用于共享文本的应用程序中,我看到我的应用程序的两个图标,名为MyApp(Post)
&MyApp(Message)
共享图像时会出现问题,因为清单中第二个定义的标签(即MyApp(Message)
)只会显示一个图标,实际上它会打开清单中第一个定义的活动(即SharePostActivity
)
那么,在共享图像时如何显示这两个选项(就像共享文本时一样)
(我已经在运行牛轧糖的模拟器上试过了&这是一个运行Oreo的真实设备)
----更新---
我发现这种奇怪的行为只有在分享来自谷歌照片应用程序的图像时才会发生,但当分享来自其他应用程序的图像时,一切正常 一些调查得出了一个解决方案:每个
意图过滤器必须包含一个android:label
,该标签指向资源,而不是硬编码字符串
...
<intent-filter android:label="@string/first_value">
...
你是否尝试添加一个特定的mimetype,例如image/jpeg
而不是image/*
是的,但问题仍然存在我认为这是谷歌照片的问题,我也注意到了这种行为,只需使用一个对话框活动,然后当用户打开你的应用程序时,对话框活动显示了一些可以处理request@NizaSiwale,但我想在系统的选择器中有两个选项,以获得更好的用户体验,Twitter和Instagram在系统的选择器中已经有多个图标,这意味着这是可行的。真的!!你一定在跟我开玩笑。。它真的起作用了!
...
<intent-filter android:label="@string/first_value">
...
<activity
android:name=".SharePostActivity"
android:label="@string/my_app_post">
<intent-filter
android:label="@string/my_app_post">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter
android:label="@string/my_app_post">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
<activity
android:name=".ShareMessageActivity"
android:label="@string/my_app_message">
<intent-filter
android:label="@string/my_app_message">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter
android:label="@string/my_app_message">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>