This example for you to share the Android call interception method for your reference, the specific content as follows
Permissions
<uses-permission android:name= "Android.permission.READ_PHONE_STATE"/>
<uses-permission android:name = "Android.permission.CALL_PHONE"/>
<uses-permission android:name= "Android.permission.PROCESS_OUTGOING _calls "/>
<!--registered broadcast monitor dial out phone-->
<receiver android:name=" Com.example.administrator.endcall.PhoneStateReceiver ">
<intent-filter>
<action android:name = "Android.intent.action.PHONE_STATE"/>
<action android:name= "Android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
dial-up Broadcast -phonestatereceiver
Package com.example.administrator.endcall;
Import Android.content.BroadcastReceiver;
Import Android.content.Context;
Import android.content.Intent;
Import Android.telephony.PhoneStateListener;
Import Android.telephony.TelephonyManager;
Import Android.util.Log;
The public class Phonestatereceiver extends Broadcastreceiver {
@Override
the public void onreceive Intent Intent) {
if (intent.getaction (). Equals (Intent.action_new_outgoing_call)) {
String PhoneNumber = Intent.getstringextra (intent.extra_phone_number);
LOG.I ("Blockcallhelper", "Blockcallhelper------->>>>" + PhoneNumber);
}
}
Call Hang Up
Blockcallhelper
Package com.example.administrator.endcall;
Import Android.content.Context;
Import android.content.SharedPreferences;
Import Android.database.Cursor;
Import Android.net.Uri;
Import android.os.RemoteException;
Import Android.telephony.PhoneStateListener;
Import Android.telephony.TelephonyManager;
Import Android.util.Log;
Import Com.android.internal.telephony.ITelephony;
Import java.lang.reflect.InvocationTargetException;
Import Java.lang.reflect.Method;
Import java.util.ArrayList;
Import java.util.List;
Public final class Blockcallhelper {private static final String TAG = "Blockcallhelper";
Private context Mcontext;
Private Telephonymanager Tmanger;
Private list<string> phones;
Private Blockcallback BCB; Private static Final class Factory {private static final Blockcallhelper
Instance = new Blockcallhelper ();
public static Blockcallhelper getinstance () {return factory.instance; }/** * InitializationBelow as well as data * @param context */public blockcallhelper init (contextual context) {if (contexts = null) {throw n
EW NullPointerException ("context = = null!");
} This.mcontext = context;
This.tmanger = (Telephonymanager) mcontext.getsystemservice (Context.telephony_service);
Tmanger.listen (New Phonecalllistener (), phonecalllistener.listen_call_state);
return this; /** * Inject the cell phone number that needs to be intercepted * @param phonel * * * public blockcallhelper injectblockphonenum (arraylist<string> blo
Ckcalls) {this.phones = Blockcalls;
return this;
/** * End call/private void Endcall () {class<telephonymanager> TMC = Telephonymanager.class;
Method Getitelephonymethod;
try {Getitelephonymethod = Tmc.getdeclaredmethod ("Getitelephony", (class[)) null);
Getitelephonymethod.setaccessible (TRUE);
Itelephony itelephony = (itelephony) Getitelephonymethod.invoke (Tmanger, (object[)) null);
Itelephony.endcall (); } CatCH (nosuchmethodexception E1) {e1.printstacktrace ();
catch (invocationtargetexception E2) {e2.printstacktrace ();
catch (Illegalaccessexception E3) {e3.printstacktrace ();
catch (remoteexception e4) {e4.printstacktrace (); } Private Final class Phonecalllistener extends Phonestatelistener {@Override public void Oncallstatechang Ed (int state, String incomingnumber) {if (state = = telephonymanager.call_state_ringing) {if (Phones.contai
NS (Incomingnumber)) {log.i ("Blockcallhelper", "contains contains contains");
Endcall ();
if (BCB!= null) {bcb.callback (incomingnumber);
} else {log.i ("Blockcallhelper", "contains not-------");
Blockcallhelper Setblockcallback (Blockcallback back) {THIS.BCB = back;
return this;
public interface Blockcallback {void CallBack (String incomingnum);
}
}
Look at the main interface mainactivity
package com.example.administrator.endcall;
Import android.app.Activity;
Import Android.app.NotificationManager;
Import Android.os.Bundle;
Import Android.util.Log;
Import Android.widget.Toast;
Import java.util.ArrayList; public class Mainactivity extends activity {@Override protected void onCreate (Bundle savedinstancestate) {Super
. OnCreate (Savedinstancestate);
Setcontentview (R.layout.activity_main);
arraylist<string> blockcalls = new ArrayList ();
Blockcalls.add ("13581922339");
Blockcalls.add ("+8613581922339");
Blockcalls.add ("18500813370");
Blockcalls.add ("13717717622");
Blockcalls.add ("+8613717717622"); Blockcallhelper.getinstance (). Init (This). Injectblockphonenum (Blockcalls). Setblockcallback (New Blockcallhelper.blockcallback () {@Override public void CallBack (String incomingnum) {log.i ("blockcal
Lhelper "," Incomingnum-----------"+ incomingnum);
}
}); }
}
Last look at the aidl level
Itelephony.aidl
Package com.android.internal.telephony;
Interface Itelephony {void dial (String number);
void Call (String number);
Boolean Showcallscreen ();
Boolean Showcallscreenwithdialpad (Boolean showdialpad);
Boolean Endcall ();
void Answerringingcall ();
void Silenceringer ();
Boolean Isoffhook ();
Boolean isringing ();
Boolean isidle ();
Boolean Isradioon ();
Boolean issimpinenabled ();
void Cancelmissedcallsnotification ();
Boolean supplypin (String pin);
Boolean Handlepinmmi (String dialstring);
void Toggleradioonoff ();
Boolean Setradio (Boolean turnon);
void Updateservicelocation ();
void Enablelocationupdates ();
void Disablelocationupdates ();
int Enableapntype (String type);
int Disableapntype (String type);
Boolean enabledataconnectivity ();
Boolean disabledataconnectivity ();
Boolean isdataconnectivitypossible ();
Bundle getcelllocation ();
List<neighboringcellinfo> Getneighboringcellinfo ();
int getcallstate (); int getdataactivity ();
int getdatastate ();
}
Neighboringcellinfo.aidl
Neighboringcellinfo.aidl
package android.telephony;
Parcelable Neighboringcellinfo;
The above is the entire content of this article, I hope to help you learn, but also hope that we support the cloud habitat community.