summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/CryptKeeperConfirm.java
diff options
context:
space:
mode:
authorJason parks <jparks@google.com>2011-01-26 13:11:42 -0600
committerJason parks <jparks@google.com>2011-01-27 11:26:58 -0600
commitf8217304073b5cd13823a0602568394be93bf310 (patch)
treebe47aea71aab0938a2459f865d5c41aafb8340de /src/com/android/settings/CryptKeeperConfirm.java
parentf955eda877a35241635714a8ba2dfe8fc8a8c5c0 (diff)
downloadpackages_apps_settings-f8217304073b5cd13823a0602568394be93bf310.zip
packages_apps_settings-f8217304073b5cd13823a0602568394be93bf310.tar.gz
packages_apps_settings-f8217304073b5cd13823a0602568394be93bf310.tar.bz2
More work on the Crypt Keeper.
* Use the DPM to determine if we are encrypted. * Fix misspelling (Comfirm -> Confirm). * Animate to black when enabling encryption. * Add holo droid background. * Change the progress bar to indterminate. * Display the percentage complete in the status line. * Fixed bug 3388097. You will no longer have to unplug your device to start encryption. This line is intentionally long. I could make it shorter but I am proving a point: <magic>overflow: auto;</magic>. * Actually hold onto the wakelock to prvent the device from sleeping. * Implement onStop() as a orientation change can happen at boot. This will start the activity twice and there will be multiple handlers with messages. Change-Id: Ia752d106c39e0d81431e856f8f500182e8ec1abd
Diffstat (limited to 'src/com/android/settings/CryptKeeperConfirm.java')
-rw-r--r--src/com/android/settings/CryptKeeperConfirm.java106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/com/android/settings/CryptKeeperConfirm.java b/src/com/android/settings/CryptKeeperConfirm.java
new file mode 100644
index 0000000..0269c2b
--- /dev/null
+++ b/src/com/android/settings/CryptKeeperConfirm.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2011 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.StatusBarManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.IBinder;
+import android.os.ServiceManager;
+import android.os.storage.IMountService;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+
+public class CryptKeeperConfirm extends Fragment {
+
+ public static class Blank extends Activity {
+ private Handler mHandler = new Handler();
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ if (Utils.isMonkeyRunning()) {
+ finish();
+ }
+
+ StatusBarManager sbm = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE);
+ sbm.disable(StatusBarManager.DISABLE_EXPAND
+ | StatusBarManager.DISABLE_NOTIFICATION_ICONS
+ | StatusBarManager.DISABLE_NOTIFICATION_ALERTS
+ | StatusBarManager.DISABLE_SYSTEM_INFO
+ | StatusBarManager.DISABLE_NAVIGATION);
+
+ // Post a delayed message in 700 milliseconds to enable encryption.
+ // NOTE: The animation on this activity is set for 500 milliseconds
+ // I am giving it a little extra time to complete.
+ mHandler.postDelayed(new Runnable() {
+ public void run() {
+ IBinder service = ServiceManager.getService("mount");
+ if (service == null) {
+ return;
+ }
+
+ IMountService mountService = IMountService.Stub.asInterface(service);
+ try {
+ Bundle args = getIntent().getExtras();
+ Log.d("CryptKeeper", "### password = " + args.getString("password"));
+ mountService.encryptStorage(args.getString("password"));
+ } catch (Exception e) {
+ Log.e("CryptKeeper", "Error while encrypting...", e);
+ }
+ }
+ }, 700);
+ }
+ }
+
+ private View mContentView;
+ private Button mFinalButton;
+ private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() {
+
+ public void onClick(View v) {
+ if (Utils.isMonkeyRunning()) {
+ return;
+ }
+
+ Intent intent = new Intent(getActivity(), Blank.class);
+ intent.putExtras(getArguments());
+
+ startActivity(intent);
+ }
+ };
+
+ private void establishFinalConfirmationState() {
+ mFinalButton = (Button) mContentView.findViewById(R.id.execute_encrypt);
+ mFinalButton.setOnClickListener(mFinalClickListener);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ mContentView = inflater.inflate(R.layout.crypt_keeper_confirm, null);
+ establishFinalConfirmationState();
+ return mContentView;
+ }
+}