我的意图过滤器为什么不应该匹配URI?

我的意图过滤器为什么不应该匹配URI?,第1张

概述我的android应用具有如下意图过滤器:<intent-filter><actionandroid:name="android.intent.action.VIEW"/><actionandroid:name="android.intent.action.SENDTO"/><categoryandroid:name="android.intent.category.

我的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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1078245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存