1f8217304073b5cd13823a0602568394be93bf310Jason parks/* 2f8217304073b5cd13823a0602568394be93bf310Jason parks * Copyright (C) 2011 The Android Open Source Project 3f8217304073b5cd13823a0602568394be93bf310Jason parks * 4f8217304073b5cd13823a0602568394be93bf310Jason parks * Licensed under the Apache License, Version 2.0 (the "License"); 5f8217304073b5cd13823a0602568394be93bf310Jason parks * you may not use this file except in compliance with the License. 6f8217304073b5cd13823a0602568394be93bf310Jason parks * You may obtain a copy of the License at 7f8217304073b5cd13823a0602568394be93bf310Jason parks * 8f8217304073b5cd13823a0602568394be93bf310Jason parks * http://www.apache.org/licenses/LICENSE-2.0 9f8217304073b5cd13823a0602568394be93bf310Jason parks * 10f8217304073b5cd13823a0602568394be93bf310Jason parks * Unless required by applicable law or agreed to in writing, software 11f8217304073b5cd13823a0602568394be93bf310Jason parks * distributed under the License is distributed on an "AS IS" BASIS, 12f8217304073b5cd13823a0602568394be93bf310Jason parks * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f8217304073b5cd13823a0602568394be93bf310Jason parks * See the License for the specific language governing permissions and 14f8217304073b5cd13823a0602568394be93bf310Jason parks * limitations under the License. 15f8217304073b5cd13823a0602568394be93bf310Jason parks */ 16f8217304073b5cd13823a0602568394be93bf310Jason parks 17f8217304073b5cd13823a0602568394be93bf310Jason parkspackage com.android.settings; 18f8217304073b5cd13823a0602568394be93bf310Jason parks 19f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.app.Activity; 20f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.app.Fragment; 21f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.app.StatusBarManager; 22f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.content.Context; 23f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.content.Intent; 24f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.os.Bundle; 25f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.os.Handler; 26f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.os.IBinder; 27f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.os.ServiceManager; 28f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.os.storage.IMountService; 29f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.util.Log; 30f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.view.LayoutInflater; 31f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.view.View; 32f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.view.ViewGroup; 33f8217304073b5cd13823a0602568394be93bf310Jason parksimport android.widget.Button; 34f8217304073b5cd13823a0602568394be93bf310Jason parks 35f8217304073b5cd13823a0602568394be93bf310Jason parkspublic class CryptKeeperConfirm extends Fragment { 36f8217304073b5cd13823a0602568394be93bf310Jason parks 37f8217304073b5cd13823a0602568394be93bf310Jason parks public static class Blank extends Activity { 38f8217304073b5cd13823a0602568394be93bf310Jason parks private Handler mHandler = new Handler(); 39f8217304073b5cd13823a0602568394be93bf310Jason parks 40f8217304073b5cd13823a0602568394be93bf310Jason parks @Override 41f8217304073b5cd13823a0602568394be93bf310Jason parks public void onCreate(Bundle savedInstanceState) { 42f8217304073b5cd13823a0602568394be93bf310Jason parks super.onCreate(savedInstanceState); 43f8217304073b5cd13823a0602568394be93bf310Jason parks 4413d62049f7c96c47356f23eaee7f0997612fdf9fAndy Stadler setContentView(R.layout.crypt_keeper_blank); 4513d62049f7c96c47356f23eaee7f0997612fdf9fAndy Stadler 46f8217304073b5cd13823a0602568394be93bf310Jason parks if (Utils.isMonkeyRunning()) { 47f8217304073b5cd13823a0602568394be93bf310Jason parks finish(); 48f8217304073b5cd13823a0602568394be93bf310Jason parks } 49f8217304073b5cd13823a0602568394be93bf310Jason parks 50f8217304073b5cd13823a0602568394be93bf310Jason parks StatusBarManager sbm = (StatusBarManager) getSystemService(Context.STATUS_BAR_SERVICE); 51f8217304073b5cd13823a0602568394be93bf310Jason parks sbm.disable(StatusBarManager.DISABLE_EXPAND 52f8217304073b5cd13823a0602568394be93bf310Jason parks | StatusBarManager.DISABLE_NOTIFICATION_ICONS 53f8217304073b5cd13823a0602568394be93bf310Jason parks | StatusBarManager.DISABLE_NOTIFICATION_ALERTS 54f8217304073b5cd13823a0602568394be93bf310Jason parks | StatusBarManager.DISABLE_SYSTEM_INFO 554d2bfd149118c8b82827d76d1d110fd5c65294c8Daniel Sandler | StatusBarManager.DISABLE_HOME 564d2bfd149118c8b82827d76d1d110fd5c65294c8Daniel Sandler | StatusBarManager.DISABLE_RECENT 5713d62049f7c96c47356f23eaee7f0997612fdf9fAndy Stadler | StatusBarManager.DISABLE_BACK); 58f8217304073b5cd13823a0602568394be93bf310Jason parks 59f8217304073b5cd13823a0602568394be93bf310Jason parks // Post a delayed message in 700 milliseconds to enable encryption. 60f8217304073b5cd13823a0602568394be93bf310Jason parks // NOTE: The animation on this activity is set for 500 milliseconds 61f8217304073b5cd13823a0602568394be93bf310Jason parks // I am giving it a little extra time to complete. 62f8217304073b5cd13823a0602568394be93bf310Jason parks mHandler.postDelayed(new Runnable() { 63f8217304073b5cd13823a0602568394be93bf310Jason parks public void run() { 64f8217304073b5cd13823a0602568394be93bf310Jason parks IBinder service = ServiceManager.getService("mount"); 65f8217304073b5cd13823a0602568394be93bf310Jason parks if (service == null) { 6600046d6e176eb05c3e3b0d13d38a8da7491bba5eJason parks Log.e("CryptKeeper", "Failed to find the mount service"); 6700046d6e176eb05c3e3b0d13d38a8da7491bba5eJason parks finish(); 68f8217304073b5cd13823a0602568394be93bf310Jason parks return; 69f8217304073b5cd13823a0602568394be93bf310Jason parks } 70f8217304073b5cd13823a0602568394be93bf310Jason parks 71f8217304073b5cd13823a0602568394be93bf310Jason parks IMountService mountService = IMountService.Stub.asInterface(service); 72f8217304073b5cd13823a0602568394be93bf310Jason parks try { 73f8217304073b5cd13823a0602568394be93bf310Jason parks Bundle args = getIntent().getExtras(); 74f8217304073b5cd13823a0602568394be93bf310Jason parks mountService.encryptStorage(args.getString("password")); 75f8217304073b5cd13823a0602568394be93bf310Jason parks } catch (Exception e) { 76f8217304073b5cd13823a0602568394be93bf310Jason parks Log.e("CryptKeeper", "Error while encrypting...", e); 77f8217304073b5cd13823a0602568394be93bf310Jason parks } 78f8217304073b5cd13823a0602568394be93bf310Jason parks } 79f8217304073b5cd13823a0602568394be93bf310Jason parks }, 700); 80f8217304073b5cd13823a0602568394be93bf310Jason parks } 81f8217304073b5cd13823a0602568394be93bf310Jason parks } 82f8217304073b5cd13823a0602568394be93bf310Jason parks 83f8217304073b5cd13823a0602568394be93bf310Jason parks private View mContentView; 84f8217304073b5cd13823a0602568394be93bf310Jason parks private Button mFinalButton; 85f8217304073b5cd13823a0602568394be93bf310Jason parks private Button.OnClickListener mFinalClickListener = new Button.OnClickListener() { 86f8217304073b5cd13823a0602568394be93bf310Jason parks 87f8217304073b5cd13823a0602568394be93bf310Jason parks public void onClick(View v) { 88f8217304073b5cd13823a0602568394be93bf310Jason parks if (Utils.isMonkeyRunning()) { 89f8217304073b5cd13823a0602568394be93bf310Jason parks return; 90f8217304073b5cd13823a0602568394be93bf310Jason parks } 91f8217304073b5cd13823a0602568394be93bf310Jason parks 92f8217304073b5cd13823a0602568394be93bf310Jason parks Intent intent = new Intent(getActivity(), Blank.class); 93f8217304073b5cd13823a0602568394be93bf310Jason parks intent.putExtras(getArguments()); 94f8217304073b5cd13823a0602568394be93bf310Jason parks 95f8217304073b5cd13823a0602568394be93bf310Jason parks startActivity(intent); 96f8217304073b5cd13823a0602568394be93bf310Jason parks } 97f8217304073b5cd13823a0602568394be93bf310Jason parks }; 98f8217304073b5cd13823a0602568394be93bf310Jason parks 99f8217304073b5cd13823a0602568394be93bf310Jason parks private void establishFinalConfirmationState() { 100f8217304073b5cd13823a0602568394be93bf310Jason parks mFinalButton = (Button) mContentView.findViewById(R.id.execute_encrypt); 101f8217304073b5cd13823a0602568394be93bf310Jason parks mFinalButton.setOnClickListener(mFinalClickListener); 102f8217304073b5cd13823a0602568394be93bf310Jason parks } 103f8217304073b5cd13823a0602568394be93bf310Jason parks 104f8217304073b5cd13823a0602568394be93bf310Jason parks @Override 105f8217304073b5cd13823a0602568394be93bf310Jason parks public View onCreateView(LayoutInflater inflater, ViewGroup container, 106f8217304073b5cd13823a0602568394be93bf310Jason parks Bundle savedInstanceState) { 107f8217304073b5cd13823a0602568394be93bf310Jason parks mContentView = inflater.inflate(R.layout.crypt_keeper_confirm, null); 108f8217304073b5cd13823a0602568394be93bf310Jason parks establishFinalConfirmationState(); 109f8217304073b5cd13823a0602568394be93bf310Jason parks return mContentView; 110f8217304073b5cd13823a0602568394be93bf310Jason parks } 111f8217304073b5cd13823a0602568394be93bf310Jason parks} 112