我正在尝试扩展复制/粘贴菜单以在我的应用程序中打开特定活动。
问题是,我的应用程序出现在某些应用程序中,而大多数应用程序中则没有。
AndroidManifest.xml:
<manifest ....>
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT" />
<data android:mimeType="text/plain" />
</intent>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="text/plain" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="text/plain"/>
</intent>
</queries>
<application ...>
<activity
android:name=".component.popupActivity.PopUpActivity"
android:exported="true"
android:theme="@style/Theme.Transparent.SemiBlack">
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:mimeType="text/html"/>
<data android:mimeType="text/plain"/>
<data android:mimeType="application/xhtml+xml"/>
</intent-filter>
</activity>
</application>
</manifest>
我的实现有什么问题吗?
我已经用 WhatsApp、Instagram、Facebook、FB Messenger 进行了测试。 仅适用于 Whatsapp。
其他应用程序,例如Translate、Outlook、idealo Shopping、Firefox Focus。 总是能够将他们的应用程序添加到复制/粘贴菜单中。
Firefox Focus是开源的,我没有注意到AndroidManifest.xml中有任何不同
经过研究,我发现以下内容:
这个 intent-filter 必须添加到活动中。 我已经使用 Android 11 和 Android 12 进行了测试。 AndroidManifest.xml:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
确保
PROCESS_TEXT
意图过滤器位于顶部。
<activity
android:name=".Navigation.HandleText"
android:excludeFromRecents="true"
android:exported="true"
android:label="@string/action_translate"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter android:label="@string/action_translate">
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
就我而言,我有两个意图过滤器,将
PROCESS_TEXT
意图过滤器移动到第一个位置即可修复它。现在它出现在 Chrome、三星浏览器和所有其他应用程序中。