使用PhoneStateListener查看调用何时结束。您很可能需要触发侦听器操作,以等待调用启动(等待直到再次从phone_state_OFFHOOK更改为phone_state_IDELL),然后编写一些代码,将应用程序恢复到空闲状态。
您可能需要在服务中运行侦听器,以确保它保持正常运行,并重新启动应用程序。一些示例代码:EndCallListener callListener = new EndCallListener();TelephonyManager mTM = (TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);
mTM.listen(callListener, PhoneStateListener.LISTEN_CALL_STATE);
听众定义:private class EndCallListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if(TelephonyManager.CALL_STATE_RINGING == state) {
Log.i(LOG_TAG, "RINGING, number: " + incomingNumber);
}
if(TelephonyManager.CALL_STATE_OFFHOOK == state) {
//wait for phone to go offhook (probably set a boolean flag) so you know your app initiated the call.
Log.i(LOG_TAG, "OFFHOOK");
}
if(TelephonyManager.CALL_STATE_IDLE == state) {
//when this state occurs, and your flag is set, restart your app
Log.i(LOG_TAG, "IDLE");
}
}}
在你的Manifest.xml文件添加以下权限: