我有一个带有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)));
}
}
答案 0 :(得分:0)
在某些设备中,用户在单击电话号码时无法拨打电话
这是因为您不要求Android 6及更高版本中的ACTION_CALL
的运行时权限
尝试使用ACTION_DIAL
代替,ACTION_CALL
是用于立即拨打电话,并且此方法现在受到Google新的短信和通话政策的限制!
startActivity(new Intent(Intent.ACTION_DIAL, uri));