着信コールの電話番号をブラックリストと照合するアプリがあります。
Android のいくつかのバージョンで以下のコードを使用して、着信通話の電話番号を取得しましたが、Android P に対してテストすると、予期しない動作をします。
読みやすくするために、以下のコードからすべての null チェックを削除しました。
public class IncomingCallHandler extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getExtras().getString(TelephonyManager.EXTRA_STATE);
if (state.equalsIgnoreCase(TelephonyManager.EXTRA_STATE_RINGING)) {
String phoneNumber = bundle
.getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
}
}
}
P より前のバージョンの Android では、状態 EXTRA_STATE_RINGING の onReceive が着信中に数回呼び出される場合がありますが、phoneNumber は常に同じ値 (実際の着信電話番号) を持ちます。
Android P では、着信中に onReceive が 2 回呼び出されます。1 回目は phoneNumber=null、2 回目は実際の電話番号です。
これはバグですか?こんなはずじゃないの?アプリでも同じ結果が得られますか?