In my app I will maintain a list of contacts.
Any calls from contacts in the list will be dropped. They will show under missed calls but the phone will not ring.
In order to use auto reject, do the following: Tap Menu | Settings | Call Settings. In the new window, tap All calls. Tap Auto Reject.
Answer or reject a phone call To answer the call, swipe the white circle to the top of the screen when your phone is locked, or tap Answer. To reject the call, swipe the white circle to the bottom of the screen when your phone is locked, or tap Dismiss.
First create this Interface:
public interface ITelephony {
boolean endCall();
void answerRingingCall();
void silenceRinger();
}
Then Create this class that extends BroadcastReceiver
public class IncomingCallReceiver extends BroadcastReceiver {
private ITelephony telephonyService;
private String blacklistednumber = "+458664455";
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
ITelephony telephonyService = (ITelephony) m.invoke(tm);
Bundle bundle = intent.getExtras();
String phoneNumber = bundle.getString("incoming_number");
Log.e("INCOMING", phoneNumber);
if ((phoneNumber != null) && phoneNumber.equals(blacklistednumber)) {
telephonyService.silenceRinger();
telephonyService.endCall();
Log.e("HANG UP", phoneNumber);
}
} catch (Exception e) {
e.printStackTrace();
}
}
This will only block that single phonenumber, but you get the point.
In your manifest add this:
<receiver android:name=".IncomingCallReceiver">
<intent-filter android:priority="999">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.PROCESS_INCOMING_CALLS" />
Download the class of ITelephony from here.
Then put it in a package (make a new package) of com.android.internal.telephony.
Then import the package to the appropriate class and for rejecting a call use the endCall()
method
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With