繁体   English   中英

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

[英]Can't auto answer phone call within my Android System App via ITelephony

我想通过自动接听电话来利用Android Lollipop上的android.permission.MODIFY_PHONE_STATE,就像Play商店中提供的一些免提“驾驶员辅助”应用程序一样。

我从AutoAnswer项目中找到了一些代码,但是当我运行它时,我收到一个InvocationTargetException,指出“用户####或应用程序都没有MODIFY_PHONE_STATE权限。”

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

要求是我不需要植根电话即可工作,但是我确实能够将应用程序添加到自定义ROM(因此它是系统应用程序)。

调用代码如下所示:

        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? 有解决方法吗?

要解决此问题,您不妨查看一下如何在Android 5.0(Lollipop)中以编程方式接听来电?

如果可以从用户那里获得显式授予的通知访问权限,那么您可以在那里查看我的答案,该答案在Android 5.0和5.1下对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM