我想过滤来自特定主机的所有网址,并在主题标签和感叹号后面添加一些数据,因此模式看起来像" http://myhost.com/bla/bla#!123456
",但是标签之后的数据根本没有通过意图。
以下是过滤器:
<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" android:host="myhost.com" android:pathPattern=".*#!.*" />
</intent-filter>
这是我用来测试它的adb命令:
adb shell am start -a android.intent.action.VIEW -d "http://myhost.com/bla/bla#!123456"
但是输出结果是:
Starting: Intent { act=android.intent.action.VIEW dat=http://myhost.com/bla/bla }
这里它已经没有了标签和后面的数据。
最后一件事也很奇怪,如果我将模式改为&#34;。*&#34; (意图启动活动后,意图捕获所有路径)意图包含带有主题标签的完整URL及其后的数据。
答案 0 :(得分:0)
这是一个老问题,但由于我遇到了同样的问题,我将在此发布我的发现。我认为问题是#是一个保留字符:http://www.w3.org/Addressing/URL/4_URI_Recommentations.html。 Uri的路径部分被截断为“/ bla / bla”,这就是你的pathPattern不匹配的原因。您需要将pathPattern设置为“/ bla / bla”并使用intent.getData().toString().split("#")[1]
或类似的东西从Intent对象中自己过滤Uri字符串中的数据。