无法通过ITelephony在我的Android系统应用中自动接听电话

时间:2015-09-30 14:19:38

标签: android root android-hardware

我想在Android Lollipop上通过自动接听电话来使用android.permission.MODIFY_PHONE_STATE,就像一些免提"驱动程序辅助" Play商店中提供的应用。

我从AutoAnswer project找到了一些代码,但是当我运行它时,我得到一个InvocationTargetException,指出&#34;用户####和应用程序都没有MODIFY_PHONE_STATE权限。&#34; < / p>

但是,在我的Manifest中,我有:<uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />我已将apk安装到/system/app/AutoAnswer.apk并将其权限设置为644。

要求是我不需要根植电话以使其工作,但我确实能够将我的应用程序添加到自定义ROM(因此它是一个系统应用程序)。 / p>

调用代码如下所示:

        TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
        Class c = Class.forName(tm.getClass().getName());
        Method m = c.getDeclaredMethod("getITelephony");
        m.setAccessible(true);
        Object telephonyService = m.invoke(tm);

        Method m1 = telephonyService.getClass().getMethod("silenceRinger");
        Method m2 = telephonyService.getClass().getMethod("answerRingingCall");

        //m1.invoke(telephonyService); // not supported for OnePlus2
        m2.invoke(telephonyService); // <- This is the line that throws the error

为什么它不允许我从我的系统应用程序中使用MODIFY_PHONE_STATE ..?有解决方法吗?

1 个答案:

答案 0 :(得分:1)

对于您的工作,您可以查看How can incoming calls be answered programmatically in Android 5.0 (Lollipop)?

如果获得用户明确授予Notification访问权限,那么您可以在Android 5.0和5.1下查看我的答案。