BroadcastReceiver
着信通話の発信者 ID を取得するために、次のコードを使用しています。
@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)
常に null を返します。アンドロイドversions<=API 27
ではすべてが正しく動作します
また、マニフェスト ファイルに と のアクセス許可をREAD_PHONE_STATE
追加しました。READ_CALL_LOG
何か案は?他の誰かが同じ問題を経験していますか?
よろしくお願いします。