首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示在WebViewScaffold中的网页上的颤音电话

显示在WebViewScaffold中的网页上的颤音电话
EN

Stack Overflow用户
提问于 2018-03-27 20:02:41
回答 3查看 2K关注 0票数 1

背景:我正在使用WebViewScaffold (颤振webview插件)在我的应用程序中打开一个网站。该网站有一个call选项,您可以在其中单击一个按钮,然后启动"tel://1231231234“url。

问题: WebView显示网页不可用的等等(类似于显示这里的问题)。我需要这个同时适用于iOS和安卓系统。如何使用这两个设备平台上的颤振WebView插件来实现这一点?

我见过有几个人只对Android使用意图(如上面所示的问题),而且不使用颤振。对于特定于平台的代码来说,这是一个问题吗?

EN

回答 3

Stack Overflow用户

发布于 2018-03-28 14:28:41

颤振Webview插件示例中所示,您可以为URL中的更改实现以下方法。

代码语言:javascript
复制
  _onUrlChanged = flutterWebviewPlugin.onUrlChanged.listen((String url) {
      if (mounted) {
        setState(() {
          _history.add("onUrlChanged: $url");
        });
    if(url.contains("tel")){
    //implement for condition
       }
      }
    });

您可以使用url发射器包来实现所需的条件,它可以在Android上使用。希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 2021-05-10 17:05:16

为此做了点小小的锻炼。

代码语言:javascript
复制
WebviewScaffold(
   url: link,
   invalidUrlRegex: Platform.isAndroid
   ? "^tel:|^https:\/\/api.whatsapp.com\/send|^mailto:"
   : "^tel:|^mailto:",
)

在无效的regex中添加whatsapp、tel和mailto,因此WebviewScaffold将在onStateChanged中捕获它们之后中止操作

代码语言:javascript
复制
flutterWebviewPlugin.onStateChanged
    .listen((WebViewStateChanged state) async {
  if (mounted) {
    if (state.type == WebViewState.abortLoad) {
      _launchSocialNativeLink(state.url);
    }
  }
});

Future<void> _launchUrl(String url) async {
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

Future<void> _launchSocialNativeLink(String url) async {
  if (Platform.isIOS) {
    if (url.contains("tel:")) {
      _launchUrl(URL);
    }
  } else if (Platform.isAndroid) {
    if (url.contains(":tel") ||
        url.contains("https://api.whatsapp.com/send")) {
      _launchUrl(URL);
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2022-03-12 06:38:47

在颤振webview中,您必须检查URL是否以

“电话”:

您必须像下面的示例那样检查它:

代码语言:javascript
复制
if (request.url.startsWith('tel:')) {
    launch('tel:01761685693');
    return NavigationDecision.prevent;
}

或者,如果你想以信使的方式打开门,那么你就必须这样通过:

代码语言:javascript
复制
if (request.url.startsWith('tel:')) {
    launch('https://m.me/111150717184573');
    return NavigationDecision.prevent;
}

尽管您必须检查URL是否可以启动,如下所示:

代码语言:javascript
复制
static launchURL(String url) async {
    if (await canLaunch(url)) {
      await launch(url);
    } else {
      throw 'Could not launch $url';
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49521531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档