我有一个应用程序可以根据黑名单检查来电的电话号码。
我已经用下面的代码为几个版本的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版本上,OnReceive with State Extra_State_Ringing可以在来电时多次呼叫,但电话号码始终具有相同的值(实际的来电号码)。
在android p上,onreceive在一个传入呼叫中被调用两次。第一次PhoneNumber=空,第二次是实际电话号码。
这是虫子吗?应该是这样吗?你的应用程序也有同样的功能吗?