diff options
Diffstat (limited to 'src/com/android/settings/CredentialInstaller.java')
-rw-r--r-- | src/com/android/settings/CredentialInstaller.java | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/com/android/settings/CredentialInstaller.java b/src/com/android/settings/CredentialInstaller.java index 5a457d7..7c63b1c 100644 --- a/src/com/android/settings/CredentialInstaller.java +++ b/src/com/android/settings/CredentialInstaller.java @@ -32,6 +32,7 @@ import android.util.Log; */ public class CredentialInstaller extends Activity { private static final String TAG = "CredentialInstaller"; + private static final String UNLOCKING = "ulck"; private KeyStore mKeyStore = KeyStore.getInstance(); private boolean mUnlocking = false; @@ -42,15 +43,26 @@ public class CredentialInstaller extends Activity { if (!"com.android.certinstaller".equals(getCallingPackage())) finish(); - if (!isKeyStoreLocked()) { + if (isKeyStoreUnlocked()) { install(); - finish(); } else if (!mUnlocking) { mUnlocking = true; Credentials.getInstance().unlock(this); - } else { - finish(); + return; } + finish(); + } + + @Override + protected void onSaveInstanceState(Bundle outStates) { + super.onSaveInstanceState(outStates); + outStates.putBoolean(UNLOCKING, mUnlocking); + } + + @Override + protected void onRestoreInstanceState(Bundle savedStates) { + super.onRestoreInstanceState(savedStates); + mUnlocking = savedStates.getBoolean(UNLOCKING); } private void install() { @@ -61,13 +73,13 @@ public class CredentialInstaller extends Activity { byte[] data = bundle.getByteArray(key); if (data == null) continue; boolean success = mKeyStore.put(key.getBytes(), data); - Log.v(TAG, "install " + key + ": " + data.length + " success? " + success); + Log.d(TAG, "install " + key + ": " + data.length + " success? " + success); if (!success) return; } setResult(RESULT_OK); } - private boolean isKeyStoreLocked() { - return (mKeyStore.test() != KeyStore.NO_ERROR); + private boolean isKeyStoreUnlocked() { + return (mKeyStore.test() == KeyStore.NO_ERROR); } } |