相关疑难解决方法(0)

在Android 9中获取来电显示

我一直在使用以下代码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;
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这已经停止了Android 9.0 (API 28).更具体地说, aIntent.getStringExtra(EXTRA_INCOMING_NUMBER)始终返回null.在android中versions<=API 27一切正常

我还在清单文件中添加了READ_PHONE_STATEREAD_CALL_LOG权限.

有任何想法吗?还有其他人遇到同样的问题吗?

在此先感谢您的帮助.

android broadcastreceiver caller-id android-9.0-pie

13
推荐指数
1
解决办法
3453
查看次数