我正在啓動設備時正在處理自動PIN/PUK服務。 服務在啓動時啓動。 我正在使用ITelephony反射方法。 我的手機是棒棒糖5.1.1,這是一個根深蒂固的Nexus 5 我的清單具有 Android Studio中說,「權限僅授予系統應用」java.lang.SecurityException:用戶10032或當前進程都沒有android.permission.MODIFY_PHONE_STATE
我使用這個代碼片段:
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﹕ Caused by: java.lang.SecurityException: Neither user 10032 nor current process has 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$Stub$Proxy.supplyPin(ITelephony.java:1540)
我一個普通的應用程序進行測試,現在有一個系統的應用程序,同樣的問題。
我做的不好嗎?我的應用真的是系統嗎?我已將eu.cabrera.pinunlocker.apk複製到/system/app
我需要什麼來授予我的應用android.permission.MODIFY_PHONE_STATE?
感謝您的幫助。 Antoine
您是否使用平臺證書籤名? – JohanShogun
不,不知道如何做到這一點 –
更多信息:http://source.android.com/devices/tech/ota/sign_builds.html – JohanShogun