代码之家  ›  专栏  ›  技术社区  ›  Bjarte Aune Olsen

安卓P是否两次广播来电,还是只有我?

  •  0
  • Bjarte Aune Olsen  · 技术社区  · 6 年前

    我有一个应用程序可以根据黑名单检查来电的电话号码。

    我已经用下面的代码为几个版本的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=空,第二次是实际电话号码。

    这是虫子吗?应该是这样吗?你的应用程序也有同样的功能吗?

    0 回复  |  直到 6 年前