【问题标题】:How to allow mailto and tel URL schemes in WebView Flutter?如何在 WebView Flutter 中允许 mailto 和 tel URL 方案?
【发布时间】:2019-10-18 15:30:20
【问题描述】:

我正在 Flutter 中开发 WebApp,但是当我点击 tel:987654321mailto: 链接到未找到页面时, 要在移动设备中打开默认应用程序,我使用的是 url_launcher 依赖项但是在后台单击 WebView 时也会运行相同的链接并转到未找到的页面。

如何处理这个任务?

【问题讨论】:

    标签: flutter flutter-dependencies


    【解决方案1】:
    navigationDelegate: (NavigationRequest request) {
      if(request.url.contains("mailto:")) {
        launch(request.url);
        return NavigationDecision.prevent;
      }
      else if (request.url.contains("tel:")) {
        launch(request.url);
        return NavigationDecision.prevent;
      }
    },
    

    【讨论】:

    • 感谢兄弟:+1:,您也可以添加“sms:”以启动短信活动:+1:
    • @sarthak-solanki 请您回答以下问题。 stackoverflow.com/questions/65069369/…
    • 我正在使用相同的代码来允许在 Flutter webview 中使用 mailto 方案。但它抛出错误,我无法构建 apk 文件。
    【解决方案2】:

    添加一些细节,需要url_launcher插件

    import 'package:webview_flutter/webview_flutter.dart';
    import 'package:url_launcher/url_launcher.dart';
    
      _launchURL(url) async {
        if (await canLaunch(url)) {
          await launch(url);
        } else {
          throw 'Could not launch $url';
        }
      }
    
    in Widget-build ...
    
    WebView(
            initialUrl: 'http://example.com',
            navigationDelegate: (NavigationRequest request) {
              if (request.url.contains("mailto:")) {
                _launchURL(request.url);
                return NavigationDecision.prevent;
              } else if (request.url.contains("tel:")) {
                _launchURL(request.url);
                return NavigationDecision.prevent;
              }
              return NavigationDecision.navigate;
            },
    )
    
    

    【讨论】:

      猜你喜欢
      • 2021-04-29
      • 2015-06-23
      • 2022-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2012-06-18
      • 1970-01-01
      相关资源
      最近更新 更多