我有一个应用程序,可以根据黑名单检查来电的电话号码。
我已将以下代码用于多个版本的Android,以获取拨入电话的电话号码,但是当我针对Android P测试该电话时,它的行为异常。
出于可读性考虑,我从下面的代码中删除了所有空检查。
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在传入呼叫期间被调用两次。第一次phoneNumber = null,第二次是实际电话号码。
这是一个错误吗?应该是这样吗?您在应用程序中得到相同的东西吗?