无法通过Android WebView拨打电话

时间:2019-02-26 08:09:43

标签: android android-webview

我有一个带有WebView的应用程序,可以加载电话号码列表。在某些设备中,用户在单击电话号码时无法拨打电话。

有两个页面,即页面A和页面B。当我加载页面A时,用户可以拨打电话,但是在同一设备上,如果他们加载页面B,则他们无法拨打电话。

我已经检查了从移动Web浏览器和从PC加载Web浏览器的页面。在这两种情况下,A和B都可以正常工作。如果这是由于我的WebView设置出现问题,则用户无法从A页拨打电话,但用户可以。

我不知道发生了什么。

  

shouldOverrideUrlLoading

  @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url.startsWith("tel:")) {
                makePhoneCall(url);
                return true;
            }
            return false;
        }
  

makePhoneCall()

    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)));
    }
}

1 个答案:

答案 0 :(得分:0)

  

在某些设备中,用户在单击电话号码时无法拨打电话

这是因为您不要求Android 6及更高版本中的ACTION_CALL的运行时权限

尝试使用ACTION_DIAL代替,ACTION_CALL是用于立即拨打电话,并且此方法现在受到Google新的短信和通话政策的限制!

startActivity(new Intent(Intent.ACTION_DIAL, uri));