Я пытаюсь завершить входящий звонок с моим приложением, если предоставлены некоторые условия.Я сделал это пару лет назад с помощью ITelephony.Но сейчас я не могу использовать ITlephony для oreo и выше.Позже я обнаружил, что могу использовать TelecomManager для пирога, но все же не для oreo.Кто-нибудь знает, как завершить входящий звонок на oreo?Мой код ниже:
Использование ITelephony
// Get the getITelephony() method
Class<?> classTelephony = Class.forName(telephonyManager.getClass().getName());
Method method = classTelephony.getDeclaredMethod("getITelephony");
// Disable access check
method.setAccessible(true);
//ITelephony telephonyService = (ITelephony) method.invoke(telephonyManager);
// Invoke getITelephony() to get the ITelephony interface
Object telephonyInterface = method.invoke(telephonyManager);
// Get the endCall method from
Class<?> telephonyInterfaceClass = Class.forName(telephonyInterface.getClass().getName());
Method methodEndCall = telephonyInterfaceClass.getDeclaredMethod("endCall");
// Invoke endCall()
methodEndCall.setAccessible(true);
methodEndCall.invoke(telephonyInterface);
И использование TelecomManager
telecomManager = (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.ANSWER_PHONE_CALLS) != PackageManager.PERMISSION_GRANTED) {
return;
}
telecomManager.endCall();
И какие разрешения я предоставил, как показано ниже:
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
В моем поиске я нашел похожие посты об этой проблеме, но ни один из них не мог мне помочь.