2015-04-05 24 views
8

Có thể sử dụng cài đặt bảo mật mặc định mà người dùng đã đặt cho điện thoại, cũng như cơ chế khóa hoặc đăng nhập cho ứng dụng của tôi không? Ý tôi là khi chúng tôi cài lại điện thoại, nó yêu cầu mật khẩu hoặc mẫu điện thoại.Sử dụng khóa màn hình trong ứng dụng của tôi

Có thể giống như cách tôi có thể sử dụng mật khẩu hoặc mẫu Android mặc định do người dùng đặt để đăng nhập vào ứng dụng của tôi không?

Mục tiêu của tôi là bỏ qua nỗ lực phát triển và sử dụng một số cách xác thực tiêu chuẩn mà không yêu cầu người dùng ghi nhớ mật khẩu mới khác.

LƯU Ý: Tôi biết rằng tôi có thể khóa màn hình theo chương trình. Nhưng thay vào đó, tôi muốn sử dụng khóa làm xác minh trước khi thực hiện bất kỳ hoạt động quan trọng nào. (Giống như cách Cài đặt yêu cầu mật khẩu trước khi đặt lại điện thoại.)

+0

Bạn đã thử [này] (http://rdcworld-android.blogspot.com.ar/2012/03/lock- phone-screen-programmtically.html) hoặc [this] (http://stackoverflow.com/questions/17923992/how-to-lock-unlock-phone-programmatically-android) hoặc [this] (http: // stackoverflow. com/questions/14352648/how-to-lock-unlock-screen-programmatically)? – 4gus71n

+0

Tất cả đều đang khóa "thiết bị". Tôi không muốn khóa màn hình hoàn toàn. Thay vào đó, tôi muốn sử dụng khóa làm xác minh trước khi thực hiện bất kỳ hoạt động quan trọng nào. (Giống như yêu cầu mật khẩu trước khi cài lại điện thoại) – Mangesh

+1

Câu trả lời ngắn gọn: Không, không phải tại thời điểm này. – ozbek

Trả lời

18

Thực ra, có API chính xác sử dụng KeyguardManager.

Đầu tiên có được một sự SystemService bảo vệ phím:

KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE); 

Và sau đó yêu cầu một mục đích xác thực sử dụng:

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

bắt đầu ý định này sử dụng startActivityForResult(Intent, int) và kiểm tra RESULT_OK nếu người dùng hoàn thành thử thách.

Đây là cấp API 21. Phiên bản trước có thể hoạt động với KeyguardLock.

2

Tôi chỉ sau @agi với vài cải tiến,

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

Được thêm vào bởi @agi, điều này chỉ áp dụng cho hệ điều hành Lollipop trở lên. –

Các vấn đề liên quan