2016-10-23 5 views
1

나는 지문 인증으로 안드로이드에서 첫 번째 레이아웃을 만들었고 지문을 성공적으로 인증했지만 지문 레이아웃에서 두 번째 레이아웃으로 직접 이동하는 방법 .지문 인증 성공 후 안드로이드에서 두 번째 레이아웃으로 이동하는 방법

사람이

이 FingerprintAuthenticationActivity.java의 코딩입니다 ....... 제발 도와주세요 :

public class FingerprintAuthenticationActivity extends AppCompatActivity { 

private static final String KEY_NAME = "example_key"; 
private FingerprintManager fingerprintManager; 
private KeyguardManager keyguardManager; 
private KeyStore keyStore; 
private KeyGenerator keyGenerator; 
private Cipher cipher; 
private FingerprintManager.CryptoObject cryptoObject; 
private FingerprintHandler fingerprintHandler; 

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

    keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
    fingerprintManager = (FingerprintManager) getSystemService(FINGERPRINT_SERVICE); 

    if (!keyguardManager.isKeyguardSecure()) { 

     Toast.makeText(this, "Lock screen security not enabled in Settings", 
       Toast.LENGTH_LONG).show(); 
     return; 
    } 

    if (ActivityCompat.checkSelfPermission(this, 
      Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { 
     Toast.makeText(this, "Fingerprint authentication permission not enabled", 
       Toast.LENGTH_LONG).show(); 

     return; 
    } 

    if (!fingerprintManager.hasEnrolledFingerprints()) { 

     // This happens when no fingerprints are registered. 
     Toast.makeText(this, "Register at least one fingerprint in Settings", 
       Toast.LENGTH_LONG).show(); 
     return; 
    } 

    generateKey(); 

    if (cipherInit()) { 
     cryptoObject = new FingerprintManager.CryptoObject(cipher); 
     FingerprintHandler helper = new FingerprintHandler(this); 
     helper.startAuth(fingerprintManager,cryptoObject); 
    } 

} 

protected void generateKey() { 
    try { 
     keyStore = KeyStore.getInstance("AndroidKeyStore"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    try { 
     keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, 
       "AndroidKeyStore"); 
    } catch (NoSuchAlgorithmException | NoSuchProviderException e) { 
     throw new RuntimeException("Failed to get KeyGenerator instance", e); 
    } 

    try { 
     keyStore.load(null); 
     keyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT) 
       .setBlockModes(KeyProperties.BLOCK_MODE_CBC) 
       .setUserAuthenticationRequired(true) 
       .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) 
       .build()); 
     keyGenerator.generateKey(); 
    } catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException | CertificateException | IOException e) { 
     throw new RuntimeException(e); 
    } 

} 

public boolean cipherInit() { 
    try { 
     cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" + KeyProperties.BLOCK_MODE_CBC + "/" 
         + KeyProperties.ENCRYPTION_PADDING_PKCS7); 
    } catch (NoSuchAlgorithmException | NoSuchPaddingException e) { 
     throw new RuntimeException("Failed to get Cipher", e); 
    } 

    try { 
     keyStore.load(null); 
     SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME,null); 
     cipher.init(Cipher.ENCRYPT_MODE, key); 
     return true; 
    } catch (KeyPermanentlyInvalidatedException e) { 
     return false; 
    } catch (KeyStoreException | CertificateException | UnrecoverableKeyException | IOException 
      | NoSuchAlgorithmException | InvalidKeyException e) { 
     throw new RuntimeException("Failed to init Cipher", e); 
    } 
} 
} 

이 FingerprintHandler.java입니다 :

public class FingerprintHandler extends FingerprintManager.AuthenticationCallback { 

private CancellationSignal cancellationSignal; 
private Context appContext; 


public FingerprintHandler(Context context) { 
    appContext = context;} 


public void startAuth(FingerprintManager manager, FingerprintManager.CryptoObject cryptoObject) { 

    cancellationSignal = new CancellationSignal(); 

    if (ActivityCompat.checkSelfPermission(appContext, Manifest.permission.USE_FINGERPRINT) != 
      PackageManager.PERMISSION_GRANTED) { 
     return; 
    } 
    manager.authenticate(cryptoObject, cancellationSignal, 0, this, null); 
} 

@Override 
public void onAuthenticationError(int errMsgId, 
            CharSequence errString) { 
    Toast.makeText(appContext, 
      "Authentication error\n" + errString, 
      Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onAuthenticationHelp(int helpMsgId, 
           CharSequence helpString) { 
    Toast.makeText(appContext, 
      "Authentication help\n" + helpString, 
      Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onAuthenticationFailed() { 
    Toast.makeText(appContext, 
      "Authentication failed.", 
      Toast.LENGTH_LONG).show(); 
} 

@Override 
public void onAuthenticationSucceeded(
     FingerprintManager.AuthenticationResult result) { 

    Toast.makeText(appContext, 
      "Authentication succeeded.", 
      Toast.LENGTH_LONG).show(); 


} 

} 

이 내가 지문 성공 EmployeeLoginActivity.java 후 이동해야하는 두 번째 레이아웃입니다 :

@Override 
public void onAuthenticationSucceeded(
     FingerprintManager.AuthenticationResult result) { 

    Toast.makeText(appContext, 
      "Authentication succeeded.", 
      Toast.LENGTH_LONG).show(); 

    appContext.startActivity(new Intent(appContext, 
     EmployeeLoginActivity.class)); 
} 
이 같은
public class EmployeeLoginActivity extends AppCompatActivity { 

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

    } 
} 

답변

2

뭔가가 성공적인 인증에 새로운 Activity을 시작하는 작업을해야

관련 문제