publicclass InCallReceiver extends BroadcastReceiver {
private TelephonyManager manager = null;
@Override
publicvoid onReceive(Context context, Intent intent) {
manager = (TelephonyManager) context
.getSystemService(Service.TELEPHONY_SERVICE);
switch (manager.getCallState()) {
case TelephonyManager.CALL_STATE_RINGING:
String incomingNumber = intent.getStringExtra("incoming_number");
if ("12345678".equals(incomingNumber)) {
try {
// 获得TelephonyManager的class对象
Class<TelephonyManager> telephonyManagerClass = TelephonyManager.class;
// 获得TelephonyManager.getITelephony方法的Method对象
Method telephonyMethod = telephonyManagerClass
.getDeclaredMethod("getITelephony", (Class[]) null);
// 允许访问私有的方法
telephonyMethod.setAccessible(true);
// 调用getITelephony()方法返回ITelephony对象
ITelephony telephony = (com.android.internal.telephony.ITelephony) telephonyMethod
.invoke(manager, (Object[]) null);
// 挂断电话
telephony.endCall();
} catch (Exception e) {
Toast.makeText(context, e.getMessage(), Toast.LENGTH_LONG)
.show();
}
}
break;
}
}
}
AIDL实现挂断电话
最新推荐文章于 2022-02-17 15:31:46 发布