我想在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 ..?有解决方法吗?
答案 0 :(得分:1)
对于您的工作,您可以查看How can incoming calls be answered programmatically in Android 5.0 (Lollipop)?
如果获得用户明确授予Notification访问权限,那么您可以在Android 5.0和5.1下查看我的答案。