1 /* 2 * Copyright 2014, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.managedprovisioning.preprovisioning; 17 18 import static android.app.admin.DevicePolicyManager.ACTION_START_ENCRYPTION; 19 20 import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENCRYPT_DEVICE_ACTIVITY_TIME_MS; 21 22 import android.content.Intent; 23 import android.os.Bundle; 24 import android.view.View; 25 import android.widget.Button; 26 import android.widget.TextView; 27 28 import com.android.managedprovisioning.R; 29 import com.android.managedprovisioning.common.ProvisionLogger; 30 import com.android.managedprovisioning.common.SetupGlifLayoutActivity; 31 import com.android.managedprovisioning.model.CustomizationParams; 32 import com.android.managedprovisioning.model.ProvisioningParams; 33 34 /** 35 * Activity to ask for permission to activate full-filesystem encryption. 36 * 37 * Pressing 'settings' will launch settings to prompt the user to encrypt 38 * the device. 39 */ 40 public class EncryptDeviceActivity extends SetupGlifLayoutActivity { 41 private ProvisioningParams mParams; 42 getEncryptionController()43 protected EncryptionController getEncryptionController() { 44 return EncryptionController.getInstance(this); 45 } 46 47 @Override onCreate(Bundle savedInstanceState)48 protected void onCreate(Bundle savedInstanceState) { 49 super.onCreate(savedInstanceState); 50 51 mParams = getIntent().getParcelableExtra(ProvisioningParams.EXTRA_PROVISIONING_PARAMS); 52 if (mParams == null) { 53 ProvisionLogger.loge("Missing params in EncryptDeviceActivity activity"); 54 finish(); 55 return; 56 } 57 58 if (getUtils().isProfileOwnerAction(mParams.provisioningAction)) { 59 initializeUi(R.string.setup_work_profile, 60 R.string.setup_profile_encryption, 61 R.string.encrypt_device_text_for_profile_owner_setup); 62 } else if (getUtils().isDeviceOwnerAction(mParams.provisioningAction)) { 63 initializeUi(R.string.setup_work_device, 64 R.string.setup_device_encryption, 65 R.string.encrypt_device_text_for_device_owner_setup); 66 } else { 67 ProvisionLogger.loge("Unknown provisioning action: " + mParams.provisioningAction); 68 finish(); 69 return; 70 } 71 72 Button encryptButton = (Button) findViewById(R.id.encrypt_button); 73 encryptButton.setOnClickListener((View v) -> { 74 getEncryptionController().setEncryptionReminder(mParams); 75 // Use settings so user confirms password/pattern and its passed 76 // to encryption tool. 77 startActivity(new Intent(ACTION_START_ENCRYPTION)); 78 }); 79 } 80 81 @Override getMetricsCategory()82 protected int getMetricsCategory() { 83 return PROVISIONING_ENCRYPT_DEVICE_ACTIVITY_TIME_MS; 84 } 85 initializeUi(int headerRes, int titleRes, int mainTextRes)86 private void initializeUi(int headerRes, int titleRes, int mainTextRes) { 87 CustomizationParams customizationParams = 88 CustomizationParams.createInstance(mParams, this, mUtils); 89 initializeLayoutParams(R.layout.encrypt_device, headerRes, customizationParams); 90 setTitle(titleRes); 91 ((TextView) findViewById(R.id.encrypt_main_text)).setText(mainTextRes); 92 } 93 }