TelephonyManager的结束呼叫的替代方案

时间:2018-06-02 05:51:51

标签: java android

我使用以下代码结束通话。但现在在Oreo上,我收到一条错误,指出需要MODIFY_PHONE_STATE权限,因此此代码不再有效。

  TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

                // Toast.makeText(context, "here", Toast.LENGTH_LONG).show();
                assert telephonyManager != null;
                Class clazz = Class.forName(telephonyManager.getClass().getName());
                Method method = clazz.getDeclaredMethod("getITelephony");
                method.setAccessible(true);
                ITelephony telephonyService;
                telephonyService = (ITelephony) method.invoke(telephonyManager);
                telephonyService.silenceRinger();
                telephonyService.endCall();

此外,根据文档和许多博客,MODIFY_PHONE_STATE权限仅对系统应用有效 那么现在我们将来如何结束通话呢? 还有其他办法。

错误:

java.lang.SecurityException: MODIFY_PHONE_STATE permission required.
        at android.os.Parcel.readException(Parcel.java:2004)
        at android.os.Parcel.readException(Parcel.java:1950)
W/System.err:     at com.android.internal.telephony.ITelephony$Stub$Proxy.endCall(ITelephony.java:2025)

0 个答案:

没有答案