在浏览器中键入时,Android自定义URI方案编码错误

时间:2011-12-11 12:02:44

标签: android uri manifest intentfilter

我正在编写我的android应用程序,我想定义一个自定义URI方案,以便用户可以通过在浏览器中输入URI来访问我的应用程序,例如:myapps:// cate = 1& id = 3

我在我的应用中成功实现了这一点,但我发现对于某些设备,浏览器会以不同的方式处理链接。

在我的HTC Flyer中,它正确地打开了我的应用程序,但在三星Galaxy Ace中,浏览器将链接转换为myapps%3A%2F%2Fcate = 1%26id = 3,这是编码的,它只是谷歌“ myapps:// cate = 1& id = 3“对我来说,而不是打开应用程序。

我在清单中定义了intent过滤器,如下所示:

<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="myapps"/>
</intent-filter>

有关此问题的任何帮助?感谢

EDITED

我刚看了android浏览器的源代码,它定义了它接受的方案:

protected static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile(
    "(?i)" + // switch on case insensitive matching
    "(" +    // begin group for schema
    "(?:http|https|file):\\/\\/" +
    "|(?:inline|data|about|content|javascript):" +
    ")" +
    "(.*)" );

现在我明白为什么自定义方案不起作用了! 任何应用程序都应该只捕获方案:http,https,文件,内联,数据,关于,内容,javascript。

1 个答案:

答案 0 :(得分:0)

为什么它必须是自定义uri?

我会用标准网址尝试一下,然后我会为它定义一个广播接收器。

基本上我认为http://youtube.comhttp://maps.google.com的工作方式。只需在您的Galaxy Ace的Android浏览器中输入这两个网址即可。

相关问题