2015-07-20 86 views
3

我正在啓動設備時正在處理自動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

+0

您是否使用平臺證書籤名? – JohanShogun

+0

不,不知道如何做到這一點 –

+0

更多信息:http://source.android.com/devices/tech/ota/sign_builds.html – JohanShogun

回答

9

您是否嘗試將應用程序放到/ system/priv-app?如果您需要授予系統權限,請參閱/ system/priv-app是您的應用的正確位置。只有/ system/priv-app中的apks可以使用「系統」級權限

+0

謝謝,這工作完美。我正在使用te位置/ system/app而不是/ system/priv-app –

相關問題