如何排除Android意图过滤器的故障?

如何排除Android意图过滤器的故障?,android,intentfilter,Android,Intentfilter,如这里的许多问题所示,有时很难正确配置意图过滤器。如果一个过滤器不能像预期的那样工作(例如,应用程序显示“权限被拒绝”),有什么技巧可以找出原因 更新:澄清一下,我不是在说内置的意图。获取自定义OAuth回调URL以解析为正确的活动是一件困难的事情,但我无法判断问题是否是由于我的意图过滤器或其他原因造成的。首先-检查调用组件的父清单中是否声明了被调用组件 如果被调用的组件是您的并且不在同一个应用程序中,请检查它是否在自己的清单中声明 其他可能的问题-如果被调用的组件本身是正确的(损坏的布局、小部

如这里的许多问题所示,有时很难正确配置意图过滤器。如果一个过滤器不能像预期的那样工作(例如,应用程序显示“权限被拒绝”),有什么技巧可以找出原因


更新:澄清一下,我不是在说内置的意图。获取自定义OAuth回调URL以解析为正确的活动是一件困难的事情,但我无法判断问题是否是由于我的意图过滤器或其他原因造成的。

首先-检查调用组件的父清单中是否声明了被调用组件

如果被调用的组件是您的并且不在同一个应用程序中,请检查它是否在自己的清单中声明


其他可能的问题-如果被调用的组件本身是正确的(损坏的布局、小部件中被禁止的元素)

一些意图过滤器受到系统的保护。因此,在使用它之前,您需要获得许可。诀窍是知道你想要什么。一旦知道需要什么,就可以查找可用的意图过滤器

首选选项是学习遍历android源代码并在清单中找到您要查找的内容。

选项1:捕获所有IntentFilter,然后调试
IntentFilter.match()
我想问完全相同的问题。我知道没有现成的工具用于调试失败的意图过滤器,但这是我正在考虑的方法:

  • 尽可能允许使用意图过滤器(即,尽可能在任何地方放置通配符),以便从应用程序中获取和检查意图

  • 将由此获得的意图对象提交到real Intent filter的
    match
    方法。通过查看返回的
    NO\u MATCH.*
    常量,您应该能够判断匹配在哪个阶段失败

  • 一旦捕获了意图,还可以在调试器中运行匹配,以便更好地了解错误

    选项2:使用应用程序链接助手 (此选项仅在要调试http/https链接时有效)

  • 确保应用链接助手插件已启用(文件>设置>插件>选中列表中的“应用链接助手”)。如果出现提示,请重新启动Studio
  • 打开助手(工具>应用程序链接助手)
  • 单击侧栏中的“打开URL映射编辑器”按钮
  • 在对话框中创建/编辑您的IntentFilter
  • 在“检查url映射”框中键入测试url

  • 这不会告诉您为什么过滤器不工作,但允许更快的试错测试。这就是为什么我的过滤器不能工作的原因(事实证明,我们不能在“端口”中放入通配符)。我将scheme设置为
    http
    ,主机过滤器设置为
    *
    ,将端口号留空(也尝试了
    *
    ),并设置了路径模式,但它只会将matcĥ端口80(在任意主机上)

    您可以通过清单中的XML声明或Java代码发布一些您的意图过滤器的代码吗?这可能会有所帮助:)