再来一个 Android 的问题,之前的问题多谢鉴客很及时的解答。 我使用 Broadcaster Receiver 来捕获手机电话状态的改变,当第一次状态更改(STATE_OFFHOOK)时工作得挺好,但在呼叫结束时无动作,下面是我的代码:
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (TelephonyManager.EXTRA_STATE_OFFHOOK.equals(state)) {working fine} else if (TelephonyManager.EXTRA_STATE_IDLE.equals(state)) {doesn't react}
当你没有任何电话是,状态是 IDLE ,当接到电话时是 OFFHOOK ,电话结束后返回 IDLE 状态。 下面是具体的处理代码:
@Override public void onCallStateChanged(int state, String incomingNumber) { super.onCallStateChanged(state, incomingNumber);
switch (state) { case TelephonyManager.CALL_STATE_IDLE: // Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show(); if(UDF.phoneState != TelephonyManager.CALL_STATE_IDLE) { //Here you are came from offhook because value of UDF.phoneState != TelephonyManager.CALL_STATE_IDLE //IDLE is calls many times so you have to keep track by a static variable like UDF.phoneState } break; case TelephonyManager.CALL_STATE_OFFHOOK: //Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show(); break; case TelephonyManager.CALL_STATE_RINGING: //Toast.makeText(context, "Idle", Toast.LENGTH_LONG).show(); endCallIfBlocked(incomingNumber); break;
default:
break;
} UDF.phoneState = state; }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。