У меня есть приложение с WebView, которое загружает список телефонных номеров. На некоторых устройствах пользователи не могут совершать вызов при нажатии на номер телефона.
Есть две страницы, страница A и страница B. Когда я загружаю страницу A, пользователь может сделать вызов, но на том же устройстве, если он загружает страницу B, он не может сделать вызов.
Я проверил загрузку обеих страниц из мобильных веб-браузеров и веб-браузера с ПК. В обоих случаях A и B работают нормально. Если это из-за чего-то не так с моей настройкой WebView, пользователь не может сделать вызов со страницы A, но пользователь может.
Я понятия не имею, что происходит.
shouldOverrideUrlLoading
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:")) {
makePhoneCall(url);
return true;
}
return false;
}
сделать телефонный звонок()
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)));
}
}
На некоторых устройствах пользователи не могут совершать вызов при нажатии на номер телефона.
Это потому, что вы не спрашиваете разрешение во время выполнения для ACTION_CALL
в Android 6 и выше
Попробуйте вместо этого использовать ACTION_DIAL
, ACTION_CALL
предназначен для мгновенного совершения телефонного звонка, и теперь это ограничено новой политикой Google в отношении SMS и вызовов!
startActivity(new Intent(Intent.ACTION_DIAL, uri));