How to import com.android.internal.telephony.ITelephony to the Android application

The ITelephony interface is internal, so you cannot get a standard reference to it. You could use reflection all the way, i.e.

TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

Method m1 = tm.getClass().getDeclaredMethod("getITelephony");
m1.setAccessible(true);
Object iTelephony = m1.invoke(tm);

Method m2 = iTelephony.getClass().getDeclaredMethod("silenceRinger"); 
Method m3 = iTelephony.getClass().getDeclaredMethod("endCall"); 

m2.invoke(iTelephony);
m3.invoke(iTelephony);

But either way those methods need the MODIFY_PHONE_STATE permission, which can only be granted to system apps. So I'm afraid it won't work anyway.


For kotlin:

 val tm = context.getSystemService(Context.TELEPHONY_SERVICE) as TelephonyManager
 val m1 = tm::class.java.getDeclaredMethod("getITelephony")
 m1.setAccessible(true)
 val telephonyService = m1.invoke(tm)
 val m2 = telephonyService::class.java.getDeclaredMethod("silenceRinger")
 val m3 = telephonyService::class.java.getDeclaredMethod("endCall")

 m2.invoke(telephonyService)
 m3.invoke(telephonyService)

For Android API 28 and above you can use the following code

 TelecomManager telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
        if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ANSWER_PHONE_CALLS) != PackageManager.PERMISSION_GRANTED) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                telecomManager.endCall();
            }
          
        }else{
       //Ask for permission here
       }

Also add this permission in your app manifest file

<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />