最近在做App開發(fā)時候嚼鹉,需要增加安全性脯倒,就采用了添加系統(tǒng)的解鎖方案的方式。具體的實現(xiàn)方式如下:
final int REQUSET_CODE_CUSTOM = 0x9900;
KeyguardManager manager = (KeyguardManager)getActivity().getSystemService(Context.KEYGUARD_SERVICE);
if(manager.isKeyguardSecure()){ //判斷系統(tǒng)是否設置了相關解鎖方式
Intent intent = manager.createConfirmDeviceCredentialIntent(null, null);
? ? if (intent !=null) {
????????startActivityForResult(intent, REQUEST_CODE_CUSTOM);
? ? }
}
此時如果是Activity則直接重寫onActivityResult 方法來處理后面的邏輯即可
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
? ? if (requestCode == REQUEST_CODE_CUSTOM) {
? ? ? ? if (resultCode == RESULT_OK) {
? ? ? ? ? ? ? ? //驗證通過邏輯
? ? ? ? } else {
? ? ? ? ? ? // The user canceled or didn’t complete the lock screen
? ? ? ? ? ? // operation. Go to error/cancellation flow.
? ? ? ? }
? ? }
}
如果是Fragment 那么是無法重寫OnActivityResult的,需要在Fragment的宿主Activity中先重寫onActivityResult
@Override
? ? protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
? ? ? ? super.onActivityResult(requestCode, resultCode, data);
? ? ? ? getSupportFragmentManager().getFragments();
? ? ? ? if (getSupportFragmentManager().getFragments().size() > 0) {
? ? ? ? ? ? List<Fragment> fragments = getSupportFragmentManager().getFragments();
? ? ? ? ? ? for (Fragment mFragment : fragments) {
? ? ? ? ? ? ? ? mFragment.onActivityResult(requestCode, resultCode, data);
? ? ? ? ? ? }
? ? ? ? }
? ? }
然后再在fragment中重寫就可以了
@Override
? ? public void onActivityResult(int requestCode, int resultCode, Intent data) {
? ? ? ? super.onActivityResult(requestCode, resultCode, data);
? ? ? ? if (resultCode == Activity.RESULT_OK) {
? ? ? ? ? ? switch (requestCode) {
? ? ? ? ? ? ? ? case REQUEST_CODE_CUSTOM:
? ? ? ? ? ? ? ? ? ? ? ? //驗證通過邏輯
? ? ? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? }