开启电话的监听状态
TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);//电话管理器 MyPhoneStatusListener listener = new MyPhoneStatusListener(); tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);//开启电话监听 PhoneStateListener.LISTEN_CALL_STATE 监听的方式为电话的状态
对电话的三种状态进行分类操作
private class MyPhoneStatusListener extends PhoneStateListener { public void onCallStateChanged(int state, String incomingNumber) { //state 电话的状态 incomingNumber 来电号码 super.onCallStateChanged(state, incomingNumber); switch (state) { //对电话的状态进行分类操作 case TelephonyManager.CALL_STATE_IDLE:// 空闲状态 break; case TelephonyManager.CALL_STATE_RINGING:// 响铃状态 break; case TelephonyManager.CALL_STATE_OFFHOOK:// 接通电话状态. break; } }
对电话进行挂断操作
//得到类编辑 服务管理器 Class clazz = getClassLoader().loadClass("android.os.ServiceManager"); //映射方法 服务管理器里面得到获取服务的方法 Method method = clazz.getMethod("getService", String.class); //设置传入方法的参数,并得到返回值 通过传递监听电话服务状态的参数,得到电话的服务 IBinder ibinder = (IBinder) method.invoke(null, Context.TELEPHONY_SERVICE); //远程调用 调用的是服务里面映射出来的方法 //实现服务中的方法 得到电话服务暴露在外面的接口的实现对象 ITelephony telePhony = ITelephony.Stub.asInterface(ibinder); //中间者进行数据的传递 //调用 挂断电话的方法 telePhony.endCall(); //进行电话的挂断
如果电话监听器不需要使用,记得进行关闭
tm.listen(listener, PhoneStateListener.LISTEN_NONE); listener = null;