如何使用资源链接在 Flutter 中打开原生应用?

问题描述 投票:0回答:1

我目前有一个在 Android 上运行的简单 Flutter 应用程序。 Flutter应用程序主要由WebView组成,当用户在WebView中导航时,它应该重定向到由不同应用程序注册的Applink,例如:

https://www.bank.com
,已经安装了Bank应用程序,并且注册了一个Applink在
https://www.bank.com/.well-known/assetlinks.json

当用户使用Webview进行导航时,不是打开原生应用程序,而是在webview中显示HTML视图。我尝试使用

url_launcher
来解决这个问题,如下所示:

      onNavigationRequest: (navigation) {         
        if(navigation.url.startsWith('https://www.bank.com')) {
          _launchURL(navigation.url);
          return NavigationDecision.prevent;
        }

        return NavigationDecision.navigate;
      },

但这不起作用,因为它失败了:

I/UrlLauncher(17085): component name for https://www.bank.com is null

有什么建议我可以从 Flutter webview 触发本机应用程序吗?

android flutter dart webview android-webview
1个回答
0
投票

我发现没办法这么做了。为此,您必须使用

url_launcher
插件,并且必须通过将
https
方案添加到查询列表中来正确配置它,令人困惑的是,该列表没有记录:

<queries>
    <!-- If your app checks for https support -->
    <intent>
        <action android:name="android.intent.action.VIEW"/>
        <data android:scheme="https"/>
    </intent>
</queries>

然后,使用以下函数,您可以启动该 URL:

_launchURL(String input) async {
var url = Uri.parse(input);

if (await canLaunchUrl(url)) {
  await launchUrl(url);
} else {
  throw 'Could not launch $url';
}}
© www.soinside.com 2019 - 2024. All rights reserved.