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
相关产品推荐
相关产品推荐

