如何为google photos中的应用提供多个分享选项?

问题描述 投票:2回答:1

我试图为图片共享提供两个共享选项,所以我有两个活动,可以接受图像类型.它在任何地方都能正常工作,除了谷歌照片.如果我注释了其中一个从清单,然后它的工作正常,但如果我保持两个,然后只有一个会出现时,我点击共享按钮,点击它将带我到其他活动,而不是一个它是相关联的。

这个问题只发生在谷歌照片应用程序,而不是其他地方。

<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>
android share manifest intentfilter
1个回答
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>

我不知道他们使用什么样的代码来标记这些,但这是导致这个问题......所以只要替换这些,它将工作......。

演示图片

Demo

我已经用红色标记了应用程序实例,但正如你所注意到的,我无法控制我的应用程序实例的出现位置。谷歌照片是这样安排的。再次,我不知道为什么......但只要我点击一个共享意图,我的应用程序在下一次尝试,它显示我的应用程序实例这样......。

After Clicking

我认为再次谷歌是聪明的这里...... 我认为他们是基于最后使用的优先级列表......

快乐的编码... :)

© www.soinside.com 2019 - 2024. All rights reserved.