Невозможно получить номер телефона от BroadcastReceiver, даже если BroadcastReceiver получает все входящие номера

#android #broadcastreceiver #telephony #telephonymanager #phone-state-listener

#Android #broadcastreceiver #телефония #telephonymanager #прослушиватель состояния телефона

Вопрос:

Я разместил приведенный ниже код в BroadcastReceiver, и этот код срабатывает каждый раз, когда поступает новый вызов. Но пакет не содержит incoming_number. Распечатав пакет, я получаю пакет [{state= RINGING}] в качестве выходных данных. и я сталкиваюсь с этой проблемой только на новых телефонах (> = Android 9.0)

 Bundle bundle = intent.getExtras();
System.out.println("Kokp 1:- "   bundle);
String phoneNumber = bundle.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
  

Ответ №1:

Документация указывает, что EXTRA_INCOMING_NUMBER заполняется только в том случае, если ваше приложение имеет следующие разрешения:

Это дополнительное значение заполняется только для получателей широковещательной рассылки ACTION_PHONE_STATE_CHANGED, которым было предоставлено Manifest.permission.READ_CALL_LOG и Manifest.permission.Разрешения READ_PHONE_STATE.