首先要在清單文件中加上權限:
讀取電話狀態權限
<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;
}
}