【问题标题】:Can't make phone call from Android WebView无法从 Android WebView 拨打电话
【发布时间】:2019-02-26 08:09:42
【问题描述】:

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

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

我已检查从移动网络浏览器和 PC 网络浏览器加载这两个页面。在这两种情况下,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)));
    }
}

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

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

    这是因为您在 Android 6 及更高版本中没有为 ACTION_CALL 请求运行时权限

    尝试改用ACTION_DIALACTION_CALL 用于即时拨打电话,现在这受到 Google 新短信和通话政策的限制!

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

    【讨论】:

    • 我尝试使用 ACTION_DIAL 无法正常工作,而同一设备能够从另一个网页拨打电话。
    • 请您使用整个功能吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多