public class PhoneStatReceiver extends BroadcastReceiver {
boolean mIsComingCall = false;
@Override
public void onReceive(Context context, Intent intent) {
Log.d(TAG,"onReceive():intent.getAction()="+intent.getAction());
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) {
String phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Log.i(TAG, "call OUT:" + phoneNumber);
} else if (intent.getAction().equals("android.intent.action.PHONE_STATE")) {
if(mGridLayer != null){
boolean mIsSlide = mGridLayer.inSlideShowMode();
Log.d(TAG,"onReceive():mIsSlide="+mIsSlide);
if(!mIsSlide){
return;
}
}else{
return;
}
TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
switch (tm.getCallState()) {
case TelephonyManager.CALL_STATE_RINGING:
mIsComingCall = true;
String incoming_number = intent.getStringExtra("incoming_number");
Log.i(TAG, "RINGING :" + incoming_number);
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
if (mIsComingCall) {
Log.i(TAG, "incoming ACCEPT");
mHasPhoneCame = true;
}
break;
case TelephonyManager.CALL_STATE_IDLE:
if (mIsComingCall) {
Log.i(TAG, "incoming IDLE");
mHasPhoneCame = true;
}
break;
}
} else {
Log.i(TAG, "onreceive else");
}
}
}
本文介绍了一个用于监听电话状态变化的Android广播接收器实现。该接收器可以捕获呼入、呼出电话及电话状态的变化,并记录相关日志信息。通过TelephonyManager获取当前电话状态,区分不同电话状态进行相应处理。
2904

被折叠的 条评论
为什么被折叠?



