Как обнаружить входящие звонки в Android Oreo и Pie - PullRequest
0 голосов
/ 02 мая 2019

Я работаю над приложением, я могу обнаружить входящие звонки вплоть до зефира.Но в Oreo и Pie я не могу обнаружить входящие звонки, потому что широковещательный приемник не запускается.Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 20 мая 2019

После Android 6.0+, даже если у вас есть права доступа, установленные в файле AndroidManifest.xml, вам все равно придется явно запросить у них их, относятся ли они к категории опасных разрешений.Вот список таких разрешений:

ACCESS_COARSE_LOCATION
ACCESS_FINE_LOCATION
ADD_VOICEMAIL
BODY_SENSORS
CALL_PHONE
CAMERA
GET_ACCOINGCALCALC * 100CREAD_CALL_LOG
READ_CELL_BROADCASTS
READ_CONTACTS
READ_EXTERNAL_STORAGE
READ_PHONE_STATE
READ_SMS
ПОЛУЧИТЬ_MMS
* * * * * * * * * * * * * * * * * * * * * * *
WRITE_CALL_LOG
WRITE_CONTACTS
WRITE_EXTERNAL_STORAGE
Чтобы запросить такие разрешения, вот код, который вы можете использовать (я использовал его в MainActivity.java в методе onCreate):

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
    if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_DENIED || checkSelfPermission(Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_DENIED) {
        String[] permissions = {Manifest.permission.READ_PHONE_STATE, Manifest.permission.CALL_PHONE};
        requestPermissions(permissions, PERMISSION_REQUEST_READ_PHONE_STATE);
    }
}

PREHIS_REПеременная используется, чтобы определить, какое разрешение запрашивалось в методе onRequestPermissionsResult.Конечно, если вам не нужно выполнять какую-либо логику в зависимости от того, утвердил ли пользователь разрешение или нет, вы можете пропустить этот метод:

@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
    switch (requestCode) {
        case PERMISSION_REQUEST_READ_PHONE_STATE: {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permission granted: " + PERMISSION_REQUEST_READ_PHONE_STATE, Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Permission NOT granted: " + PERMISSION_REQUEST_READ_PHONE_STATE, Toast.LENGTH_SHORT).show();
            }

            return;
        }
    }
}

копия: https://dev.to/hitman666/how-to-make-a-native-android-app-that-can-block-phone-calls--4e15

подробнее https://developer.android.com/training/permissions/requesting?hl=es-419

...