Android App Links:含#的链接无法匹配Intent Filter问题排查
问题分析与解决
你的配置错误在于对URL结构的理解:URL中的#page1属于**锚点(Fragment)**部分,而Android Intent Filter的<data>标签里的android:path属性只会匹配URL的路径部分,不会包含锚点内容,所以当前配置无法匹配目标链接。
正确的处理方式分为两步:
- 先在Manifest中匹配URL的基础部分(协议、主机、路径)
- 锚点部分需要在代码中单独获取并处理
修正后的Manifest配置
<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="https" android:host="example.com" android:path="/"/> </intent-filter>
代码中处理锚点逻辑
在接收Intent的Activity中,通过Uri.getFragment()获取锚点值并做对应处理:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Uri data = getIntent().getData(); if (data != null) { String fragment = data.getFragment(); if ("page1".equals(fragment)) { // 执行page1对应的业务逻辑 } } }
内容的提问来源于stack exchange,提问作者dev_nil
相关产品推荐
相关产品推荐

