Flutter url_launcher插件抛出“java.lang.IllegalArgumentException:接收方未注册:io.flutter.plugins.urllauncher.WebViewActivity”

xwbd5t1u  于 2023-05-18  发布在  Flutter
关注(0)|答案(3)|浏览(177)

我正在尝试使用Flutter的url_launcher插件打开网页。
当我点击一个按钮时,url_launcher成功打开一个网页。然而,如果我随后通过向左滑动或使用软后退按钮来导航,应用程序就会崩溃。日志上说
java.lang.RuntimeException:无法销毁活动{uk.co.pottertour.map_edinburgh_guide_airbnb/io.flutter.plugins.urllauncher.WebViewActivity}:java.lang.IllegalArgumentException:接收方未注册:io.flutter.plugins.urllauncher.WebViewActivity$1@8152196
它说WebViewActivity,所以Url_Launcher可能不是打开外部浏览器,而是打开应用程序内的Webview。
这是非常关键的,这个应用程序基本上是一个令人兴奋的东西的中心。
我怀疑是我的didChangeAppLifecycleState函数导致了这个错误,因为它发生在resume上,但不是,它是在Flutter运行build & rebuilt屏幕时发生的。
我试着注解掉我的构建过程中包含url_launcher链接的部分,相信是重建触发了它,但这没有帮助。也许有一些后台异步进程,在应用程序被绘制到屏幕之前抛出此错误。使用url_launcher

m2xkgtsf

m2xkgtsf1#

我有你同样的问题,我建议你这个解决方案,如果你不想使用url_launcher(https://pub.dev/packages/url_launcher#browser-vs-in-app-handling):

Future<void> _launchUrl(Uri url) async {
  if (!await launchUrl(url, mode: LaunchMode.externalApplication)) {
    throw Exception('Could not launch $url');
  }
}

使用mode: LaunchMode.externalApplication,链接将在您的应用之外打开,当您导航回您的应用时,应该不会有任何问题。

hlswsv35

hlswsv352#

现在,您可以用以下方法覆盖依赖项

dependency_overrides:
  url_launcher_android: "<=6.0.32"
8ljdwjyq

8ljdwjyq3#

这在url_launched_android 6.0.34中已修复。在https://github.com/flutter/flutter/issues/127014中跟踪了该问题

相关问题