在 Android 2.3(API 级别 10)及更早版本上将 Android Activity 注册为 BROWSABLE Intent 是否有不同的步骤?

我已经设置了一个带有意图过滤器的活动,该过滤器使用自定义方案:

<intent-filter>
    <action name="android.intent.action.VIEW"/>
    <category name="android.intent.category.DEFAULT"/>
    <category name="android.intent.category.BROWSABLE"/>
    <data scheme="@string/myCallbackProtocol"/>
</intent-filter>

在运行 2.3 的物理设备上,并且 SDK 的模拟器设置为 2.3,浏览器应用程序使用我的自定义协议将链接定向到应用程序。

但是,如果我将模拟器缩小到 2.2 或 2.1,则浏览器不会重定向,而是指示找不到服务器。我没有运行这些 API 级别的实际设备。

我想发布我的应用程序,以便它与运行 2.1 及更高版本的设备兼容。我认为这应该是可能的,这是错误的吗?根据 安卓文档 Intent.CATEGORY_BROWSABLE 从 1.0 开始就可用。

谢谢!

有帮助吗?

解决方案 2

解决了。 BROWSABLE 至少可以追溯到 Android 2.1。在2.3之前似乎加载 <data scheme=""> 来自字符串资源会导致活动未正确注册。

改变 @string/ 对硬编码值的引用会产生所需的结果。

<intent-filter>
    <action name="android.intent.action.VIEW"/>
    <category name="android.intent.category.DEFAULT"/>
    <category name="android.intent.category.BROWSABLE"/>
    <data scheme="my-custom-protocol"/>
</intent-filter>

其他提示

我使用时没有遇到任何问题 BROWSABLE 如果不是更早的话,至少可以回到 2.1。但是,我还没有实现自定义方案,更不用说在字符串资源中定义的方案了。 这是一个示例项目 演示使用 BROWSABLE.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top