如何在 WebView Flutter 中允许 mailto 和 tel URL 方案?
Posted
技术标签:
【中文标题】如何在 WebView Flutter 中允许 mailto 和 tel URL 方案?【英文标题】:How to allow mailto and tel URL schemes in WebView Flutter? 【发布时间】:2019-10-18 15:30:20 【问题描述】:我正在 Flutter 中开发 WebApp,但是当我点击 tel:987654321
或 mailto:
链接到未找到页面时,
要在移动设备中打开默认应用程序,我使用的是 url_launcher 依赖项但是在后台单击 WebView 时也会运行相同的链接并转到未找到的页面。
如何处理这个任务?
【问题讨论】:
【参考方案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 请您回答以下问题。 ***.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;
,
)
【讨论】:
以上是关于如何在 WebView Flutter 中允许 mailto 和 tel URL 方案?的主要内容,如果未能解决你的问题,请参考以下文章
在 WebView [Android Studio] [Java] 中允许麦克风访问(权限)
如何在 Google Cloud Endpoints 中允许 CORS?
如何在 JetBrains Rider 中允许不安全的代码?