我正在编写我的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。
答案 0 :(得分:0)
为什么它必须是自定义uri?
我会用标准网址尝试一下,然后我会为它定义一个广播接收器。
基本上我认为http://youtube.com或http://maps.google.com的工作方式。只需在您的Galaxy Ace的Android浏览器中输入这两个网址即可。