Add saving/restoring state in CredentialInstaller and ...
make it transparent.
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 6ddd679..a77728c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -321,7 +321,7 @@
</activity>
<activity android:name="CredentialInstaller"
- android:label="@string/credential_installer_activity_title">
+ android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.credentials.SYSTEM_INSTALL" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/res/values/strings.xml b/res/values/strings.xml
index b01608a..c98a867 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1937,9 +1937,6 @@
<string name="gadget_toggle_wifi">Updating Wi-Fi setting</string>
<string name="gadget_toggle_bluetooth">Updating Bluetooth setting</string>
- <!-- credential installer title -->
- <string name="credential_installer_activity_title">Credential installer</string>
-
<string name="vpn_settings_activity_title">VPN settings</string>
<!-- Title of VPN connect dialog -->
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 @@
*/
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 @@
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 @@
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);
}
}