2014-11-24 8 views
5

Sembra che alcune delle funzionalità DeviceAdmin è stato rotto in Lollipop, almeno sul mio Nexus 5.DevicePolicyManger(). GetCurrentFailedPasswordAttempts blocca app

Questo funziona perfettamente su KitKat, Jellybean e Ice Cream Sandwich

@Override 
public void onPasswordFailed(Context context, Intent intent) { 

    DevicePolicyManager policyManager = (DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE); 
    if(policyManager != null){ 
     int attempts = policyManager.getCurrentFailedPasswordAttempts(); 
     Log.v("TAG", "Attempts = " + attempts); 
    } 
} 

Ma sul mio Nexus 5 con Android 5.0 Lollipop produce il seguente errore:

11-24 16:11:50.117 27053-27053/com.example.myapp E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    Process: com.example.myapp, PID: 27053 
    java.lang.RuntimeException: Unable to start receiver com.example.myapp.receivers.AdminReceiver: java.lang.NullPointerException: Attempt to read from field 'int android.content.pm.UserInfo.id' on a null object reference 
      at android.app.ActivityThread.handleReceiver(ActivityThread.java:2586) 
      at android.app.ActivityThread.access$1700(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.lang.NullPointerException: Attempt to read from field 'int android.content.pm.UserInfo.id' on a null object reference 
      at android.os.Parcel.readException(Parcel.java:1546) 
      at android.os.Parcel.readException(Parcel.java:1493) 
      at android.app.admin.IDevicePolicyManager$Stub$Proxy.getCurrentFailedPasswordAttempts(IDevicePolicyManager.java:2476) 
      at android.app.admin.DevicePolicyManager.getCurrentFailedPasswordAttempts(DevicePolicyManager.java:1261) 
      at com.example.myapp.receivers.AdminReceiver.onPasswordFailed(AdminReceiver.java:48) 
      at android.app.admin.DeviceAdminReceiver.onReceive(DeviceAdminReceiver.java:417) 
      at android.app.ActivityThread.handleReceiver(ActivityThread.java:2579) 
            at android.app.ActivityThread.access$1700(ActivityThread.java:144) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1355) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

It's been reported as an issue in the L-preview as well.

La mia domanda, che cosa sta causando questo?

+0

FYI: la mia app ha lo stesso problema in modo da non essere soli. L'ho "risolto" con un semplice blocco try - almeno l'app non si bloccherà più. –

+0

Grazie @TheisBorg - Per ora, terrò solo un riferimento statico per sbloccare i tentativi, finché un eroe non viene e salva la giornata .. – Jakob

risposta

0

Ho ottenuto lo stesso errore, quindi ho capito che potrebbe non funzionare per le versioni 5.0 e successive. Quindi quello che ho fatto è controllare il numero di tentativi sbagliati a livello di codice. Come se qualcuno volesse sbloccare schema o pin se inserisce errori, il ricevitore prenderà e chiama il metodo passwordFailed(). Così ho creato l'oggetto SharedPreference e sto memorizzando il numero del metodo passwordFailed(). Basandomi su questo, sto ottenendo un numero di schemi errati. Penso che questo sia il modo corretto oppure no non lo so.

Problemi correlati