首先要在清单文件中加上权限:
读取电话状态权限
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
接受电话的状态:
<receiver android:name=".Myphoone">
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE"></action>
</intent-filter>
</receiver>
写一个类继承BroadcastReceiver
具体实现步骤如下:
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");
Log.i("test","来电了"+number);
//得到电话管理者类对象
Class<TelephonyManager> clazz=TelephonyManager.class;
//得到方法
Method method= null;
try {
method = clazz.getDeclaredMethod("getITelephony",null);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
//允许访问私有的方法
method.setAccessible(true);
//执行方法
ITelephony iTelephony= null;
try {
iTelephony = (ITelephony) method.invoke(telephonyManager,null);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
// /判断是不是这个号码是的话就挂断
if("18274628579".equals(number)){
try {
iTelephony.endCall();
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
case TelephonyManager.CALL_STATE_OFFHOOK:
Log.i("test","通话中...录音中");
break;
case TelephonyManager.CALL_STATE_IDLE:
Log.i("test","挂了");
break;
}
}