0

着信コールの電話番号をブラックリストと照合するアプリがあります。

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 回目は実際の電話番号です。

これはバグですか?こんなはずじゃないの?アプリでも同じ結果が得られますか?

4

0 に答える 0