我的android应用具有如下意图过滤器:
<intent-filter> <action androID:name="androID.intent.action.VIEW" /> <action androID:name="androID.intent.action.SENDTO" /> <category androID:name="androID.intent.category.DEFAulT" /> <category androID:name="androID.intent.category.broWSABLE" /> <data androID:scheme="satur9nine" androID:host="*" /> <data androID:scheme="http" androID:host="www.satur9nine.com" androID:pathPrefix="/app" /> </intent-filter>
它应该匹配satur9nine:// anything或http://www.satur9nine.com/app/anything.但是它匹配http://www.notmywebsite.com/app,这是什么问题?
解决方法:
关于此文档的文档相当模糊,但是您可以通过在IntentFilter docs中看到方法addDataScheme,addDataPath和addDataAuthority彼此独立,并且无法将方案,路径和权限一起添加来解决.
查看IntentFilter source可以确认这一点.数据URI的每个部分(方案,路径,权限)都存储在其自己的列表中,因此来自不同< data>值当匹配代码运行时,元素最终混杂在一起,而不是每个< data>元素被独立检查.
解决方案是具有多个意图过滤器部分,如下所示:
<intent-filter> <action androID:name="androID.intent.action.VIEW" /> <action androID:name="androID.intent.action.SENDTO" /> <category androID:name="androID.intent.category.DEFAulT" /> <category androID:name="androID.intent.category.broWSABLE" /> <data androID:scheme="http" androID:host="www.satur9nine.com" androID:pathPrefix="/app" /></intent-filter><intent-filter> <action androID:name="androID.intent.action.VIEW" /> <action androID:name="androID.intent.action.SENDTO" /> <category androID:name="androID.intent.category.DEFAulT" /> <category androID:name="androID.intent.category.broWSABLE" /> <data androID:scheme="satur9nine" androID:host="*" /></intent-filter>
总结 以上是内存溢出为你收集整理的我的意图过滤器为什么不应该匹配URI?全部内容,希望文章能够帮你解决我的意图过滤器为什么不应该匹配URI?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)