2015-04-05 27 views
8

Ist es möglich, die Standardsicherheitseinstellungen, die der Benutzer für das Telefon festgelegt hat, als Sperr- oder Anmeldemechanismus für meine App zu verwenden? Ich meine, wenn wir das Telefon zurücksetzen, fragt es nach dem Passwort oder Muster des Telefons.Verwenden Sie die Bildschirmsperre in meiner App

Ist es möglich, dass ich das Standard-Android-Passwort oder -Muster verwenden kann, das der Benutzer für die Anmeldung bei meiner App festgelegt hat?

Mein Ziel ist es, den Entwicklungsaufwand zu umgehen und eine Standardauthentifizierung zu verwenden, ohne dass sich der Benutzer ein anderes neues Passwort merken muss.

HINWEIS: Ich bin mir bewusst, dass ich den Bildschirm programmgesteuert sperren kann. Stattdessen möchte ich das Schloss als Bestätigung verwenden, bevor eine kritische Operation ausgeführt wird. (Genau wie Einstellungen Fragen Sie nach dem Passwort vor dem Zurücksetzen des Telefons.)

+0

Haben Sie versucht, [diese] (http://rdcworld-android.blogspot.com.ar/2012/03/lock- phone-screen-programmically.html) oder [this] (http://stackoverflow.com/questions/17923992/how-to-lock-unlock-phone-programmatic-android) oder [dies] (http: // stackoverflow. com/questions/14352648/how-to-lock-entsperren-Bildschirm-programmatisch)? – 4gus71n

+0

Alle sperren das "Gerät". Ich möchte den Bildschirm nicht vollständig sperren. Stattdessen möchte ich die Sperre als Bestätigung verwenden, bevor eine kritische Operation ausgeführt wird. (Genau wie das Passwort vor dem Zurücksetzen des Telefons fragen) – Mangesh

+1

Kurze Antwort: Nein, nicht in diesem Moment. – ozbek

Antwort

18

Eigentlich gibt es eine API zu genau das mit der KeyguardManager.

Sie zuerst den Keyguard Systemservice bekommen:

KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 

und fordert dann eine Authentifizierungs Absicht mit:

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

diese Absicht startet startActivityForResult(Intent, int) und überprüft für RESULT_OK wenn der Benutzer erfolgreich die Herausforderung abgeschlossen ist.

Dies ist für API-Ebene 21. Vorherige Versionen funktionieren möglicherweise mit KeyguardLock.

2

Ich bin nur folgende @agi mit wenigen Verbesserung,

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

Wie von @agi hinzugefügt, folgt dies nur für das OS Lollipop und höher. –