Android Oreo上的自动结束通话

时间:2019-03-17 10:56:24

标签: java android android-8.0-oreo phone-call

如果有某些条件,我正在尝试用我的应用程序结束来电。我是几年前通过ITelephony做到的。但是现在我不能将ITelephony用于oreo及更高版本。后来发现,我可以将TelecomManager用于饼图,但仍不能用于oreo。有人知道如何结束oreo上的来电吗?我的代码如下:

使用电话技术

            // 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" />

在搜索中,我发现了与此问题类似的帖子,但其中任何一个都帮不了我。

0 个答案:

没有答案