【发布时间】:2023-02-07 17:18:34
【问题描述】:
我决定尝试使用 MAUI。我首先接近一个 Android 应用程序,并使用 Shell 进行导航。
我的应用程序有两种打开方式:
- 当用户点击图标打开它时
- 通过深层链接,由另一个应用程序触发。
我遇到的问题是,当通过深层链接触发应用程序时,我需要导航到特定页面。我试图在访问 Shell 的当前实例的 OnNewIntent 上执行此操作,但是在执行
GoToAsync("my_route")时,它会在尝试导航到新页面时出错。这是我在 MainActivity 上的内容:
protected override void OnNewIntent(Intent intent) { base.OnNewIntent(intent); var action = intent.Action; var data = intent.DataString; if (!string.IsNullOrWhiteSpace(data) && data.Contains("/data/")) { if(Shell.Current != null) { Shell.Current.GoToAsync("myroute)"; // Also tried: // - Shell.Current.GoToAsync("myroute").Wait(); // - App.Current.Dispatcher.Dispatch(async () => await Shell.Current.GoToAsync("//myroute")); (suggested by @toolmakersteve ) } } }这是错误:
Java.Lang.IllegalArgumentException: '找不到 id 0x1 的视图 (未知)片段 ShellItemRenderer{19d353d} (6c8560ab-dd58-4cbf-9e8b-2b9e12315f45 id=0x1)'
我假设这与我正在做的事情是不可能的事实有关,所以我需要找到正确的方法来使用 Shell 导航从 MAUI 上的
OnNewIntent导航到特定页面。更新:同样重要的是要注意,当深度链接触发应用程序打开时,有两种不同的行为:
- 如果应用程序已经在运行,它会抛出上述异常
- 如果应用程序尚未运行,它会定期在主屏幕上打开,没有错误,但我希望它导航到所需的页面。
谢谢!
【问题讨论】:
-
你为什么要重写
MainActivity中的方法OnNewIntent?如果您方便的话,能否请您发布一个基本的演示,以便我们可以在我们这边进行测试? -
我通过在首选项中保存来自深度链接的路由然后每隔一次启动将其删除来解决这个问题。但是很麻烦。您找到更好的解决方案了吗?
标签: android xamarin android-intent maui