public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive( Context context, Intent intent) {
Log.i("sms", "CallReceiver Start...");
Log.i("sms", "CallReceiver Phone num : " + num);
Log.i("sms", "CallReceiver Phone lastNumber : " + lastNumber);
TelephonyManager telephony = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
CallListener customPhoneListener = new CallListener(context);
telephony.listen(customPhoneListener,
PhoneStateListener.LISTEN_CALL_STATE);
}
以上是广播的主要代码,收到来电会接到广播
然后在listener中回调
public class CallListener extends PhoneStateListener {
private static final String TAG = "sms";
// 最后的状态,默认为空闲状态
private static int lastState = TelephonyManager.CALL_STATE_IDLE;
private Context context;
public CallListener(Context context) {
super();
this.context = context;
}
public void onCallStateChanged(int state, String incomingNumber) {
// 如果当前状态为空闲,上次状态为响铃中的话,则认为是未接来电
Log.e("lastState", "="+lastState);
Log.e("state", "="+state);
//未接来电,有些手机卡的卡二收到的state始终为0
if (lastState == TelephonyManager.CALL_STATE_RINGING && state == TelephonyManager.CALL_STATE_IDLE) {
Log.e("state", "未接来电");
}
// 最后的时候改变当前值
lastState = state;
}
我在判断未接来电的时候发现,大部分手机正常,有一些双卡手机收到的state始终为0,我就无法判断是否为未接电话
希望能有大佬能指点指点
有没有大佬遇到过这样的问题?