【问题标题】:How to give multiple share options for an app in google photos?如何在谷歌照片中为应用程序提供多个共享选项?
【发布时间】:2020-08-28 00:19:35
【问题描述】:

我正在尝试为图像共享提供两个共享选项,因此我有两个可以接受图像类型的活动。除了 Google 照片之外,它在任何地方都能正常工作。 如果我从清单中注释掉其中一个,那么它可以正常工作,但是如果我保留两者,那么当我单击共享按钮并单击它将带我到另一个活动时,只会显示一个,而不是与它相关联的活动.

此问题仅出现在 Google 照片应用中,其他任何地方都不会出现。

<activity
        android:name="mobi.abc.xyz.NewPostActivity">

        <intent-filter android:label="Socials">
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.PICK" />

            <data android:mimeType="text/plain" />
            <data android:mimeType="application/*" />
            <data android:mimeType="image/*" />
            <data android:mimeType="video/*" />
        </intent-filter>
    </activity>

    <activity
        android:name="mobi.abc.xyz.EditActivity">

        <intent-filter android:label="Share Image to Edit">
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />

            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.PICK" />
            <data android:mimeType="image/*" />
        </intent-filter>
    </activity>

【问题讨论】:

  • 也许是谷歌在他们的应用程序中进行过滤?
  • 但它适用于 instagram 和 facebook 等其他应用程序。
  • 我已经写了一个答案检查它,如果它帮助你,请告诉我......

标签: android share manifest intentfilter


【解决方案1】:

嗨,我来这里是为了写 @kolboc 提到的相同的东西,即谷歌照片进行过滤,因为 twitter 和 Instagram 是著名的应用程序,可能是谷歌给予它们优先级,因此显示了这些应用程序的共享实例,但我错了...

我找到了解决此问题的解决方案...

所以它发生的原因是你在硬编码字符串中提到了标签。所以用一些像这样的字符串文件名替换那些......

<activity
        android:name="mobi.abc.xyz.NewPostActivity">

        <intent-filter android:label="@string/socials">
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.PICK" />

            <data android:mimeType="text/plain" />
            <data android:mimeType="application/*" />
            <data android:mimeType="image/*" />
            <data android:mimeType="video/*" />
        </intent-filter>
    </activity>

    <activity
        android:name="mobi.abc.xyz.EditActivity">

        <intent-filter android:label="@string/share_image_to_edit">
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SEND_MULTIPLE" />

            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.PICK" />
            <data android:mimeType="image/*" />
        </intent-filter>
    </activity>

我不知道他们使用什么样的代码来标记它们,但这是导致这种情况的问题......所以只需替换那些它就可以工作的......

演示图片

我已将应用实例标记为红色,但如您所见,我无法控制应用实例出现的位置。谷歌照片是这样排列的。我又不知道为什么? ...但是一旦我在下一次尝试中单击我的应用程序的共享意图之一,它就会显示我的应用程序实例,如下所示...

我再次认为谷歌在这里很聪明......我认为他们正在根据上次使用的优先级制作列表......

编码愉快.. :)

【讨论】:

  • 非常感谢,我永远不会尝试这个,我尝试了所有可能的方法,但无法让它发挥作用。感谢它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-27
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 2015-01-07
相关资源
最近更新 更多