Почему разрешение READ_PHONE_STATE спрашивает «звонить и управлять»? - PullRequest
1 голос
/ 11 июня 2019

Для получения IMEI я использую из этого кода:

TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
       if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 1);
        } else { 
                iMEI = tm.getDeviceId(); 
        }

Но когда мое приложение работает, появляется следующее диалоговое окно:

READ_PHONE_STATE

Программа просит предоставить разрешение «Для совершения телефонных звонков и управления ими», которое может пугать пользователей использованием приложения.

А теперь мой вопрос:

Почему разрешение READ_PHONE_STATE спрашивает "сделать и управлять телефонным звонком"? Пока я не звоню и не управляю телефонным звонком в моем приложение.

Ответы [ 2 ]

4 голосов
/ 11 июня 2019
Разрешение

READ_PHONE_STATE указано как Опасное разрешение и предоставляет доступ для чтения состояния телефона. Он входит в группу разрешений Phone. Если запрашивается опасное разрешение, система показывает диалог, связанный с ее группой. в вашем случае Phone. Это и есть причина - у пользователя запрашивается разрешение «звонить и управлять». Вот как спрашиваются разрешения https://developer.android.com/training/permissions/requesting

Чтобы было понятнее, см. https://developer.android.com/guide/topics/permissions/overview

Там написано -

Если устройство работает под управлением Android 6.0 (уровень API 23) и приложение targetSdkVersion 23 или выше, следующее поведение системы применяется, когда ваше приложение запрашивает опасное разрешение:

  • Если приложение в настоящее время не имеет каких-либо разрешений в группе разрешений, система покажет пользователю диалоговое окно запроса разрешений
    описание группы разрешений, к которой приложение хочет получить доступ.
    диалоговое окно не описывает конкретное разрешение в этой группе.
    Например, если приложение запрашивает разрешение READ_CONTACTS,
    системный диалог просто говорит, что приложению необходим доступ к устройству
    контакты. Если пользователь дает одобрение, система дает приложению только
    запрашиваемое разрешение.

  • Если приложение уже получило другое опасное разрешение в той же группе разрешений, система немедленно предоставляет
    разрешение без какого-либо взаимодействия с пользователем. Например, если
    приложение ранее запрашивало и получало READ_CONTACTS
    разрешение, а затем запрашивает WRITE_CONTACTS, система
    немедленно дает это разрешение без показа разрешений
    диалог с пользователем.

Есть много лучших способов получить уникальный идентификатор. Например -

String android_id = Settings.Secure.getString(getApplicationContext().getContentResolver(),
                Settings.Secure.ANDROID_ID);
2 голосов
/ 11 июня 2019

Почему разрешение READ_PHONE_STATE спрашивает "сделать и управлять телефонным звонком"?Пока я не звонил и не управлял телефонным звонком в своем приложении.

После Зефира нам нужно явно вызвать разрешения, которые входят в Опасное разрешение .

READ_PHONE_STATE подпадает под Группа разрешений Вызывается Телефон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...