简体   繁体   中英

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

I would like to make use of android.permission.MODIFY_PHONE_STATE on Android Lollipop by auto-answering a call, much like some of the hands-free "driver assist" apps that are available on the Play Store.

I found some code from the AutoAnswer project , but when I run it, I get a InvocationTargetException stating that "neither the user #### nor the application has MODIFY_PHONE_STATE permissions."

However, in my Manifest I have: <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" /> and I have installed my apk into /system/app/AutoAnswer.apk and set it's permissions to 644.

The requirement is that I don't need a phone to be rooted in order for it to work, but I do have the ability to add my application to the custom ROM (so it is a system app).

The calling code looks like this:

        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

Why is it not allowing me to use MODIFY_PHONE_STATE from my system app..? Is there a workaround?

For a work around you may wish to check out How can incoming calls be answered programmatically in Android 5.0 (Lollipop)?

If getting explicit grant of Notification access from the user is ok then you can check out my answer there which worked for me under Android 5.0 and 5.1.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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