2015-04-05 20 views
8

È possibile utilizzare le impostazioni di sicurezza predefinite, che l'utente ha impostato sul telefono, anche come meccanismo di blocco o accesso per la mia app? Voglio dire, quando resettiamo il telefono, chiede la password o il modello del telefono.Usa blocco schermo nella mia app

È possibile nello stesso modo in cui posso utilizzare la password o il modello predefinito di Android da parte dell'utente per accedere alla mia app?

Il mio obiettivo è bypassare lo sforzo di sviluppo e utilizzare un modo standard di autenticazione senza che l'utente ricordi un'altra nuova password.

NOTA: Sono consapevole che posso bloccare lo schermo a livello di programmazione. Invece, voglio usare il blocco come verifica prima di eseguire qualsiasi operazione critica. (Proprio come le impostazioni chiedono la password prima di resettare il telefono.)

+0

Hai provato [questo] (http://rdcworld-android.blogspot.com.ar/2012/03/lock- phone-screen-programmtically.html) o [this] (http://stackoverflow.com/questions/17923992/how-to-lock-unlock-phone-programmatically-android) o [this] (http: // stackoverflow. com/domande/14352648/how-to-blocco-sblocco-schermo-programmazione)? – 4gus71n

+0

Questi stanno bloccando il "dispositivo". Non voglio bloccare completamente lo schermo. Invece, voglio usare il blocco come verifica prima di eseguire qualsiasi operazione critica. (Proprio come chiedere la password prima di resettare il telefono) – Mangesh

+1

Risposta breve: No, non in questo momento. – ozbek

risposta

18

In realtà, esiste esattamente un'API che utilizza lo KeyguardManager.

In primo luogo ottenere un lo SystemService blocco tastiera:

KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 

e quindi richiedere un intento di autenticazione utilizzando:

Intent i = km.createConfirmDeviceCredentialIntent(title,description); 

iniziare questo intento utilizzando startActivityForResult(Intent, int) e controllare per RESULT_OK se l'utente completa con successo la sfida.

Questo è per livello API 21. Le versioni precedenti potrebbero funzionare con KeyguardLock.

2

Sto solo seguendo @agi con poche valorizzazione,

public class MainActivity extends AppCompatActivity { 
    private static int CODE_AUTHENTICATION_VERIFICATION=241; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 
     if(km.isKeyguardSecure()) { 

      Intent i = km.createConfirmDeviceCredentialIntent("Authentication required", "password"); 
      startActivityForResult(i, CODE_AUTHENTICATION_VERIFICATION); 
     } 
     else 
      Toast.makeText(this, "No any security setup done by user(pattern or password or pin or fingerprint", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode==RESULT_OK && requestCode==CODE_AUTHENTICATION_VERIFICATION) 
     { 
      Toast.makeText(this, "Success: Verified user's identity", Toast.LENGTH_SHORT).show(); 
     } 
     else 
     { 
      Toast.makeText(this, "Failure: Unable to verify user's identity", Toast.LENGTH_SHORT).show(); 
     } 
    } 
} 
+0

Come aggiunto da @agi, questo segue solo per OS Lollipop e versioni successive. –

Problemi correlati