【发布时间】:2014-07-16 05:49:38
【问题描述】:
我创建了BroadCastReceiver,它监听IncomingCall 和Outgoing Calls。尝试在BroadCastReceiver 中添加PhoneStateListener 和TelephonyManager,这在模拟器和某些设备上完美运行。
它不适用于Samsung ST 7652。总是返回CALL_STATE_IDLE 和来电号码null。为什么会这样?
如下:
public class ReceiverInComingCall extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
TelephonyManager phone = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
MyPhoneStateListener PhoneListener = new MyPhoneStateListener();
phone.listen(PhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
private class MyPhoneStateListener extends PhoneStateListener{
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
switch(state){
case TelephonyManager.CALL_STATE_RINGING:
Log.i("CALL","CALL_STATE_RINGING");
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i("CALL","CALL_STATE_OFFHOOK");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.i("CALL","CALL_STATE_IDLE");
break;
}
}
}
}
打扰我了:-
E/MSimTelephonyManager(621): MSimTelephonyManager sRegistryMsim != null
为什么当我为 Samsung ST 7652 调试时它会在 LogCat 中给出类似的内容,否则它会显示完美的呼叫状态日志?
试过
PhoneStateListener not working with some devices。但它也没有帮助我解决这个问题总是给我CALL_STATE_IDLE和传入号码null。
【问题讨论】:
标签: android broadcastreceiver telephonymanager phone-state-listener