gpt4 book ai didi

javascript - 无法从 android webview 内的网页进行语音通话

转载 作者:行者123 更新时间:2023-11-28 17:07:53 24 4
gpt4 key购买 nike

我有一个带有 webView 的应用程序,它加载一个联系人详细信息列表,用户可以通过单击该号码进行语音调用。网页中使用了tel:标签。以下是我编写的代码。

    @Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
final Uri uri = request.getUrl();
if (uri.toString().startsWith("tel:"))
makePhoneCall(uri.toString());
return super.shouldOverrideUrlLoading(view, request);
}
<小时/>

ma​​kePhoneCall()

public void makePhoneCall(String phoneNumber) {
if (ContextCompat.checkSelfPermission(MainActivity.this,
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE}, REQUEST_CALL);
checkPermissions();
} else {
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse(phoneNumber)));
}

}

问题是..

在许多设备上安装后,在某些设备上,用户无法调用电话,点击号码后没有任何反应。我确信触摸事件正在发生,因为单击数字 5 秒后会出现一个弹出窗口,效果很好。

部分设备是诺基亚、华硕 Zenfone Max 和 Android Oreo。

我检查过 Android 版本,大多数设备都有 6+ Android 版本。

  • 我在 onCreate() 创建的不同线程上运行 webView;

在其他设备上一切正常。

我似乎无法弄清楚这里发生了什么。

最佳答案

我建议您使用 Intent.ACTION_DIAL 而不是 ACTION_CALL,在使用 ACTION_DIAL 时,您的应用中不需要调用权限,它只会打开您的拨号器并输入已输入的号码,然后允许用户决定是否真的要打电话。

@Override
public boolean shouldOverrideUrlLoading(WebView view, String Url) {
if (Url.startsWith("tel:")) {
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(Url));
startActivity(intent);
return true;
}
return false;
}

关于javascript - 无法从 android webview 内的网页进行语音通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55292916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com