我用Flutter开发了一个网页,当单击floatActionButton.I时,我想使用url方案打开另一个应用程序,我现在遇到了一些问题:
以手机应用程序为例,其他应用程序也有相同的问题,


单击网页中的事件代码按钮如下:使用启动器插件
void _openAPP() {
launchUrl(
Uri(scheme: "tel", host: "12345678"),
mode: LaunchMode.externalApplication,
);
}我想知道为什么使用webview_flutter插件加载的网页不打开网址方案。谢谢!
发布于 2022-07-04 10:33:34
我知道原因,这一次我没有使用url_launcher插件,直接使用href跳转。需要修改webview_flutter_android插件中的代码。
import 'dart:html' as html;
void _openAPP() {
html.window.location.href = "tel://123456789";
}io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// -- new code start
final String url = request.getUrl().toString();
if (!url.startsWith("http") || !url.startsWith("https")) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
view.getContext().startActivity(intent);
return true;
}
// -- new code end
if (flutterApi != null) {
flutterApi.requestLoading(this, view, request, reply -> {});
}
return shouldOverrideUrlLoading;
}发布于 2022-07-04 08:12:55
我怀疑你必须对待你的Android平台项目,才能允许这种行为。例如,您可以尝试更改AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />发布于 2022-07-04 11:53:43
正确的格式是tel:12345678而不是tel://12345678。
Uri.parse("tel:12345678")https://stackoverflow.com/questions/72853535
复制相似问题