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

Xamarin.Android应用完全关闭后深度链接失效问题求助

修复Xamarin.Android深度链接冷启动不触发问题

1. 确认Intent过滤器配置正确

不管是用SplashActivity还是MainActivity作为启动页,都要保证Intent过滤器包含必要配置,以MainActivity为例:

[IntentFilter(new[] { Android.Content.Intent.ActionView },
              Categories = new[] { Android.Content.Intent.CategoryDefault, Android.Content.Intent.CategoryBrowsable },
              DataScheme = "你的自定义scheme",
              DataHost = "你的域名/主机名")]
public class MainActivity : AppCompatActivity
{
    // 页面逻辑
}

如果用SplashActivity做启动页,同样要给它加上完全一致的IntentFilter。

2. 在启动Activity的OnCreate中处理冷启动Intent

应用完全关闭后启动(冷启动)时,深度链接的Intent会通过OnCreate的参数传入,而不会触发OnNewIntent,所以必须在这里手动处理:

protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    // 直接处理冷启动时的深度链接Intent
    HandleDeepLink(Intent);
}

3. 统一处理热启动与冷启动的Intent逻辑

把深度链接的处理逻辑抽成单独方法,同时在OnNewIntent中调用,覆盖应用后台唤醒(热启动)的场景:

protected override void OnNewIntent(Intent intent)
{
    base.OnNewIntent(intent);
    // 更新当前Activity的Intent为最新传入的
    Intent = intent;
    HandleDeepLink(intent);
}

private void HandleDeepLink(Intent intent)
{
    if (intent?.Data != null)
    {
        // 这里写你的深度链接处理逻辑,比如解析Uri
        var linkUri = intent.Data.ToString();
        // 示例:跳转到对应业务页面
        // StartActivity(new Intent(this, typeof(TargetActivity)));
    }
}

4. 处理SplashActivity跳转时的Intent传递

如果用SplashActivity作为启动页,跳转MainActivity时必须把原始的深度链接Intent完整传递,否则MainActivity拿不到链接信息:

// SplashActivity的OnCreate方法
protected override void OnCreate(Bundle savedInstanceState)
{
    base.OnCreate(savedInstanceState);
    var mainIntent = new Intent(this, typeof(MainActivity));
    // 传递所有Intent附加数据
    mainIntent.PutExtras(Intent);
    // 传递深度链接的Uri
    mainIntent.SetData(Intent.Data);
    StartActivity(mainIntent);
    Finish();
}

5. 检查LaunchMode配置

避免启动Activity的LaunchMode设置为singleInstance或singleTask导致Intent传递异常,推荐使用默认的standard或singleTop(需要避免重复实例时):

[Activity(LaunchMode = LaunchMode.SingleTop)]
public class MainActivity : AppCompatActivity
{
    // 页面逻辑
}

6. App Links场景补充(https协议链接)

如果使用的是Android App Links(https协议的域名链接),除了配置IntentFilter,还要确保:

  • 已在域名根目录上传assetlinks.json验证文件
  • 冷启动时OnAppLinkRequestReceived可能不会触发,仍需依赖OnCreate中的Intent处理逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 00:56:04