我在我的应用清单中注册了以下意图过滤器:
<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:host="m.mycompany.de"
android:pathPattern="/app/list"
android:scheme="http" />
</intent-filter>
并创建了一个简单的html页面来测试应用是否正确打开:
<!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML>
<HEAD>
<TITLE>
A Small Hello
</TITLE>
</HEAD>
<BODY>
<a href = "http://m.mycompany.de/app/list?param1=178¶m2=87294">Click</a>
</BODY>
</HTML>
在某些设备上(例如运行Android 5.1的Nexus 5)点击该链接会按预期打开我的应用,在其他设备上(例如Nexus 6也运行5.1)PlayStore(我的应用页面)打开而不是我的应用。
任何想法可能是什么问题?
编辑:奇怪的是,在将网址简化为以下内容时,这个“错误”已经消失:
http://m.mycompany.de/list?param1=178¶m2=87294
我的意图过滤到
<data
android:host="m.mycompany.de"
android:pathPattern="/app"
android:scheme="http" />
这不是一个选项,因为我无法控制我的实时应用的网址。
答案 0 :(得分:2)
您可以使用 pathprefix 代替 android:pathPattern
<data
android:host="m.mycompany.de"
android:pathPrefix="/app/list"
android:scheme="http" />
,在第二种情况下,当您使用以下网址时,
http://m.mycompany.de/list?param1=178¶m2=87294
数据标签应为
<data
android:host="m.mycompany.de"
android:pathPrefix="/list"
android:scheme="http" />
答案 1 :(得分:0)
如我所见,您使用数据部分的pathPattern参数方向错误。
根据Google docs:
pathPattern属性指定匹配的完整路径 针对Intent对象中的完整路径。
所以你需要使用pathPrefix而不是pathPattern:
pathPrefix属性指定匹配的部分路径 仅针对Intent对象中路径的初始部分。
或者只是丢弃路径并仅使用主机和方案:
<data
android:host="m.mycompany.de"
android:scheme="http" />
P.S。另外请注意Mimmo Grottoli对原始消息的评论。