凡事总需研究,才会明白。
鲁迅《狂人日记》
闲来无事写的一个小Demo
public class MyPhoneStateReceived extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if("android.intent.action.PHONE_STATE".equals(intent.getAction())){
//得到电话管理者
TelephonyManager telephonyManager= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
//得到电话的状态
int state=telephonyManager.getCallState();
switch (state) {
case TelephonyManager.CALL_STATE_RINGING:
//得到电话号码
String number=intent.getStringExtra("incoming_number");
//得到电话管理者类对象
Class<TelephonyManager> clazz=TelephonyManager.class;
//得到方法
try {
Method method=clazz.getDeclaredMethod("getITelephony",null);
//设置可访问
method.setAccessible(true);
//执行方法
ITelephony iTelephony= (ITelephony) method.invoke(telephonyManager,null);
//判断
if("15116339234".equals(number)){
Log.i("test","来电了1"+number);
iTelephony.endCall();
Log.i("test","来电了"+number);
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i("test","通话中...录音中");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.i("test","挂了");
break;
}
}
}
}
最主要的是要下面这两个AIDL