You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android带参数DeepLink创建问题:配置<intent-filter>后无效求解决

解决Android DeepLink接收参数的问题

嗨,我来帮你搞定这个DeepLink配置的问题~你之前的配置失效,核心问题是在<data>的pathPrefix里直接写参数占位符是不对的,Android的intent-filter是用来匹配URL的结构,不是这么定义参数的。

正确的<intent-filter>配置

你应该把路径和参数分离开,参数属于URL的query部分,不需要在pathPrefix里声明。正确的配置应该是这样:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <data 
        android:scheme="my-scheme" 
        android:host="my.host.name" 
        android:pathPrefix="/data"/>
</intent-filter>

这样配置后,像my-scheme://my.host.name/data?name=小明&token=xyz789这样的URL就能匹配到你的Activity了。

在Activity中获取参数

配置好后,你需要在对应的Activity里解析URL的参数。可以在onCreate或者onNewIntent方法里做这件事:

// Kotlin示例
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    intent.data?.let { uri ->
        val name = uri.getQueryParameter("name")
        val token = uri.getQueryParameter("token")
        // 这里处理拿到的参数,比如显示或者做业务逻辑
        name?.let { Log.d("DeepLink", "收到name参数:$it") }
        token?.let { Log.d("DeepLink", "收到token参数:$it") }
    }
}

如果是Java的话:

// Java示例
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Uri uri = getIntent().getData();
    if (uri != null) {
        String name = uri.getQueryParameter("name");
        String token = uri.getQueryParameter("token");
        // 处理参数逻辑
        if (name != null) Log.d("DeepLink", "收到name参数:" + name);
        if (token != null) Log.d("DeepLink", "收到token参数:" + token);
    }
}

额外注意点

  • 如果你希望强制某些参数必须存在,可以添加android:queryParameterName到<data>里,比如:
    <data 
        android:scheme="my-scheme" 
        android:host="my.host.name" 
        android:pathPrefix="/data"
        android:queryParameterName="name"
        android:queryParameterName="token"/>
    
    不过一般更灵活的方式是在代码里判断参数是否存在,再做相应处理。
  • 测试DeepLink的时候,可以用adb命令快速验证:
    adb shell am start -W -a android.intent.action.VIEW -d "my-scheme://my.host.name/data?name=test&token=123456" com.your.package.name
    

内容的提问来源于stack exchange,提问作者BMM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:32:18