Java.lang.SecurityException: ни пользователь 10032, ни текущий процесс не имеют android.permission.MODIFY_PHONE_STATE

При запуске устройства я работаю с услугой автоматического PIN / PUK. Служба запускается во время загрузки. Я использую ITelephony с рефлексивными методами. Мой телефон – леденец 5.1.1, это корневая связь 5. В моем манифесте Android Studio говорит: «Разрешение предоставляется только системным приложениям»,

Я использую этот фрагмент кода:

TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); int state = tm.getSimState(); if(state == TelephonyManager.SIM_STATE_PIN_REQUIRED || state == TelephonyManager.SIM_STATE_PUK_REQUIRED) { Log.d(TAG,"PIN PUK STATE = " + state ); if (state == TelephonyManager.SIM_STATE_PIN_REQUIRED ){ try { message += ", PIN Code required" ; Class clazz = Class.forName(tm.getClass().getName()); if (clazz != null) { Method m = clazz.getDeclaredMethod("getITelephony"); m.setAccessible(true); Object iTelephony = m.invoke(tm); Class params[] = new Class[1]; params[0] = String.class; Method m2 = iTelephony.getClass().getDeclaredMethod("supplyPin", params); m2.setAccessible(true); Object i = m2.invoke(iTelephony, "1111"); Log.d(TAG, m2.toString() + " *** " + i.toString()); } }catch (Exception e) { Log.d(TAG,"Impossible to unlock " + e.toString()); e.printStackTrace(); } } 

И я получаю этот журнал:

07-20 10: 31: 33.109 1267-1267 / eu.cabrera.pinunlocker W / System.err: вызвано: java.lang.SecurityException: ни пользователь 10032, ни текущий процесс не имеет android.permission.MODIFY_PHONE_STATE. 07-20 10: 31: 33.112 1267-1267 / eu.cabrera.pinunlocker W / System.err: at android.os.Parcel.readException (Parcel.java:1546) 07-20 10: 31: 33.112 1267-1267 / Eu.cabrera.pinunlocker W / System.err: at android.os.Parcel.readException (Parcel.java:1499) 07-20 10: 31: 33.112 1267-1267 / eu.cabrera.pinunlocker W / System.err: at com.android.internal.telephony.ITelephony $ заглушка $ Proxy.supplyPin (ITelephony.java:1540)

Я тестировал с помощью обычного приложения и теперь с системным приложением, той же проблемой.

Я делаю что-то плохое? Является ли мое приложение действительно системой? Я скопировал eu.cabrera.pinunlocker.apk в / system / app

Что мне нужно, чтобы предоставить моему приложению android.permission.MODIFY_PHONE_STATE?

Спасибо за вашу помощь. Antoine

Вы пытались поместить свое приложение в / system / priv-app? Если вам нужно предоставить системные разрешения / система / приватное приложение, это правильное место для вашего приложения. Только apks in / system / priv-app может использовать разрешения «system» -level