Я использовал следующий код в BroadcastReceiver
, чтобы получить
идентификатор звонящего на входящие звонки:
@Override
public void onReceive(Context aContext, Intent aIntent) {
String action = aIntent.getAction();
if (action==null) return;
if (!action.equals("android.intent.action.PHONE_STATE")) return;
String curState = aIntent.getStringExtra(TelephonyManager.EXTRA_STATE);
if ((TelephonyManager.EXTRA_STATE_RINGING.equals(curState))
&&(TelephonyManager.EXTRA_STATE_IDLE.equals(oldState)))){
String incNumber = aIntent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
// do something here
}
oldState=curState;
}
К сожалению, это перестало работать в Android 9.0 (API 28)
. Более конкретно,
aIntent.getStringExtra(EXTRA_INCOMING_NUMBER)
всегда возвращает ноль. В андроиде versions<=API 27
все работает правильно
Я также добавил разрешения READ_PHONE_STATE
и READ_CALL_LOG
в файл манифеста.
Есть идеи? Кто-нибудь еще испытывает ту же проблему?
Заранее спасибо за помощь.