EncryptionInterstitial.java revision d553abcb4cd4ee3682ae4e864c06514d65fcb253
146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller/* 246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * Copyright (C) 2014 The Android Open Source Project 346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * 446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * Licensed under the Apache License, Version 2.0 (the "License"); 546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * you may not use this file except in compliance with the License. 646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * You may obtain a copy of the License at 746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * 846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * http://www.apache.org/licenses/LICENSE-2.0 946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * 1046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * Unless required by applicable law or agreed to in writing, software 1146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * distributed under the License is distributed on an "AS IS" BASIS, 1246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * See the License for the specific language governing permissions and 1446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller * limitations under the License 1546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller */ 1646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 1746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerpackage com.android.settings; 1846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 19aa0376759873893197a0109025fd4ec8beca5929Jim Millerimport android.accessibilityservice.AccessibilityServiceInfo; 2047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.app.AlertDialog; 2147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.app.Dialog; 2246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.app.admin.DevicePolicyManager; 2346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.content.Context; 2447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.content.DialogInterface; 2546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.content.Intent; 2646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.os.Bundle; 275437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roosimport android.os.UserHandle; 28d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Sainiimport android.support.v7.preference.Preference; 29edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Sainiimport android.util.Log; 3046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.LayoutInflater; 3146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.View; 3247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.view.accessibility.AccessibilityManager; 3346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.widget.TextView; 3446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 359d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wrenimport com.android.internal.logging.MetricsProto.MetricsEvent; 3639b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport com.android.internal.widget.LockPatternUtils; 3739b467482d1bf256a111c757e9b7621c6f523271Jason Monk 3839b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport java.util.List; 3939b467482d1bf256a111c757e9b7621c6f523271Jason Monk 4046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerpublic class EncryptionInterstitial extends SettingsActivity { 41edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini private final static String TAG = EncryptionInterstitial.class.getSimpleName(); 4246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 430973c31db164e09cb5be275cf0f991dd208ee0faMaurice Lam protected static final String EXTRA_PASSWORD_QUALITY = "extra_password_quality"; 44edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini protected static final String EXTRA_UNLOCK_METHOD_INTENT = "extra_unlock_method_intent"; 450698a216311acd9ab52224602d1a75c08bf89f04Jim Miller public static final String EXTRA_REQUIRE_PASSWORD = "extra_require_password"; 46edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini private static final int CHOOSE_LOCK_REQUEST = 100; 4746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 4846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller @Override 4946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller public Intent getIntent() { 5046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller Intent modIntent = new Intent(super.getIntent()); 5146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller modIntent.putExtra(EXTRA_SHOW_FRAGMENT, EncryptionInterstitialFragment.class.getName()); 5246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller return modIntent; 5346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 5446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 5546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller @Override 5646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller protected boolean isValidFragment(String fragmentName) { 5746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller return EncryptionInterstitialFragment.class.getName().equals(fragmentName); 5846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 5946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 600698a216311acd9ab52224602d1a75c08bf89f04Jim Miller public static Intent createStartIntent(Context ctx, int quality, 61edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini boolean requirePasswordDefault, Intent unlockMethodIntent) { 6246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller return new Intent(ctx, EncryptionInterstitial.class) 6346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller .putExtra(EXTRA_PASSWORD_QUALITY, quality) 640698a216311acd9ab52224602d1a75c08bf89f04Jim Miller .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header) 65edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini .putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault) 66edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini .putExtra(EXTRA_UNLOCK_METHOD_INTENT, unlockMethodIntent); 6746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 6846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 6946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment 70d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini implements DialogInterface.OnClickListener { 7146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 7247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller private static final int ACCESSIBILITY_WARNING_DIALOG = 1; 73d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini private static final String KEY_ENCRYPT_REQUIRE_PASSWORD = "encrypt_require_password"; 74d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini private static final String KEY_ENCRYPT_DONT_REQUIRE_PASSWORD = 75d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini "encrypt_dont_require_password"; 76d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini 77d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini private Preference mRequirePasswordToDecrypt; 78d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini private Preference mDontRequirePasswordToDecrypt; 790698a216311acd9ab52224602d1a75c08bf89f04Jim Miller private boolean mPasswordRequired; 80edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini private Intent mUnlockMethodIntent; 8146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 8246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller @Override 838a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren protected int getMetricsCategory() { 849d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wren return MetricsEvent.ENCRYPTION; 858a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren } 868a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren 878a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren @Override 88d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini public void onCreate(Bundle savedInstanceState) { 89d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini super.onCreate(savedInstanceState); 907e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam 91d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini addPreferencesFromResource(R.xml.security_settings_encryption_interstitial); 92d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini 93d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini mRequirePasswordToDecrypt = findPreference(KEY_ENCRYPT_REQUIRE_PASSWORD); 94d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini mDontRequirePasswordToDecrypt = findPreference(KEY_ENCRYPT_DONT_REQUIRE_PASSWORD); 95c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam boolean forFingerprint = getActivity().getIntent().getBooleanExtra( 96c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false); 97edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini Intent intent = getActivity().getIntent(); 98edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini final int quality = intent.getIntExtra(EXTRA_PASSWORD_QUALITY, 0); 99edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini mUnlockMethodIntent = (Intent) intent.getParcelableExtra(EXTRA_UNLOCK_METHOD_INTENT); 10046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller final int msgId; 10146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller final int enableId; 10246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller final int disableId; 10346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller switch (quality) { 10446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: 105c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam msgId = forFingerprint ? 106c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam R.string.encryption_interstitial_message_pattern_for_fingerprint : 107c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam R.string.encryption_interstitial_message_pattern; 10846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller enableId = R.string.encrypt_require_pattern; 10946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller disableId = R.string.encrypt_dont_require_pattern; 11046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller break; 11146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: 11246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX: 113c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam msgId = forFingerprint ? 114c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam R.string.encryption_interstitial_message_pin_for_fingerprint : 115c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam R.string.encryption_interstitial_message_pin; 11646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller enableId = R.string.encrypt_require_pin; 11746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller disableId = R.string.encrypt_dont_require_pin; 11846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller break; 11946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller default: 120c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam msgId = forFingerprint ? 121c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam R.string.encryption_interstitial_message_password_for_fingerprint : 122c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam R.string.encryption_interstitial_message_password; 12346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller enableId = R.string.encrypt_require_password; 12446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller disableId = R.string.encrypt_dont_require_password; 12546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller break; 12646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 127d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini TextView message = createHeaderView(); 128d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini message.setText(msgId); 129d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini setHeaderView(message); 1300698a216311acd9ab52224602d1a75c08bf89f04Jim Miller 131d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini mRequirePasswordToDecrypt.setTitle(enableId); 1320698a216311acd9ab52224602d1a75c08bf89f04Jim Miller 133d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini mDontRequirePasswordToDecrypt.setTitle(disableId); 1340698a216311acd9ab52224602d1a75c08bf89f04Jim Miller 13547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller setRequirePasswordState(getActivity().getIntent().getBooleanExtra( 13647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller EXTRA_REQUIRE_PASSWORD, true)); 137d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini } 138edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini 139d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini protected TextView createHeaderView() { 140d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini TextView message = (TextView) LayoutInflater.from(getActivity()).inflate( 141d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini R.layout.encryption_interstitial_header, null, false); 142d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini return message; 143edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini } 144edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini 145edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini protected void startLockIntent() { 146edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini if (mUnlockMethodIntent != null) { 147edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini mUnlockMethodIntent.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired); 148edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini startActivityForResult(mUnlockMethodIntent, CHOOSE_LOCK_REQUEST); 149edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini } else { 150edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini Log.wtf(TAG, "no unlock intent to start"); 151edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini finish(); 152edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini } 153edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini } 154edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini 155edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini @Override 156edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini public void onActivityResult(int requestCode, int resultCode, Intent data) { 157edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini super.onActivityResult(requestCode, resultCode, data); 158e9d2abca86ef3a83fb25b9562e206e459a5b4e2bMaurice Lam if (requestCode == CHOOSE_LOCK_REQUEST && resultCode != RESULT_CANCELED) { 159e9d2abca86ef3a83fb25b9562e206e459a5b4e2bMaurice Lam getActivity().setResult(resultCode, data); 160edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini finish(); 161edac136e162d3935ea1ccedf6c630eff4c591d7eUdam Saini } 16246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 16346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 16446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller @Override 165d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini public boolean onPreferenceTreeClick(Preference preference) { 166d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini final String key = preference.getKey(); 167d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini if (key.equals(KEY_ENCRYPT_REQUIRE_PASSWORD)) { 16847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled(); 16947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller if (accEn && !mPasswordRequired) { 17047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller setRequirePasswordState(false); // clear the UI state 17147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller showDialog(ACCESSIBILITY_WARNING_DIALOG); 17247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } else { 17347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller setRequirePasswordState(true); 174d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini startLockIntent(); 17547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 17647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } else { 17747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller setRequirePasswordState(false); 178d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini startLockIntent(); 17947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 180d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini return true; 18147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 18247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller 18347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller @Override 18447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller public Dialog onCreateDialog(int dialogId) { 18547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller switch(dialogId) { 18647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller case ACCESSIBILITY_WARNING_DIALOG: { 18747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller final int quality = new LockPatternUtils(getActivity()) 1885437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos .getKeyguardStoredPasswordQuality(UserHandle.myUserId()); 18947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller final int titleId; 19047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller final int messageId; 19147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller switch (quality) { 19247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: 19347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller titleId = R.string.encrypt_talkback_dialog_require_pattern; 19447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller messageId = R.string.encrypt_talkback_dialog_message_pattern; 19547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller break; 19647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: 19747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX: 19847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller titleId = R.string.encrypt_talkback_dialog_require_pin; 19947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller messageId = R.string.encrypt_talkback_dialog_message_pin; 20047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller break; 20147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller default: 20247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller titleId = R.string.encrypt_talkback_dialog_require_password; 20347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller messageId = R.string.encrypt_talkback_dialog_message_password; 20447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller break; 20547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 206aa0376759873893197a0109025fd4ec8beca5929Jim Miller 207aa0376759873893197a0109025fd4ec8beca5929Jim Miller 208aa0376759873893197a0109025fd4ec8beca5929Jim Miller List<AccessibilityServiceInfo> list = 209aa0376759873893197a0109025fd4ec8beca5929Jim Miller AccessibilityManager.getInstance(getActivity()) 210aa0376759873893197a0109025fd4ec8beca5929Jim Miller .getEnabledAccessibilityServiceList( 211aa0376759873893197a0109025fd4ec8beca5929Jim Miller AccessibilityServiceInfo.FEEDBACK_ALL_MASK); 212aa0376759873893197a0109025fd4ec8beca5929Jim Miller final CharSequence exampleAccessibility; 213aa0376759873893197a0109025fd4ec8beca5929Jim Miller if (list.isEmpty()) { 214aa0376759873893197a0109025fd4ec8beca5929Jim Miller // This should never happen. But we shouldn't crash 215aa0376759873893197a0109025fd4ec8beca5929Jim Miller exampleAccessibility = ""; 216aa0376759873893197a0109025fd4ec8beca5929Jim Miller } else { 217aa0376759873893197a0109025fd4ec8beca5929Jim Miller exampleAccessibility = list.get(0).getResolveInfo() 218aa0376759873893197a0109025fd4ec8beca5929Jim Miller .loadLabel(getPackageManager()); 219aa0376759873893197a0109025fd4ec8beca5929Jim Miller } 22047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller return new AlertDialog.Builder(getActivity()) 22147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller .setTitle(titleId) 222aa0376759873893197a0109025fd4ec8beca5929Jim Miller .setMessage(getString(messageId, exampleAccessibility)) 22347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller .setCancelable(true) 22447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller .setPositiveButton(android.R.string.ok, this) 22547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller .setNegativeButton(android.R.string.cancel, this) 22647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller .create(); 22747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 22847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller default: throw new IllegalArgumentException(); 22947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 23046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 23146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller 23247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller private void setRequirePasswordState(boolean required) { 23347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller mPasswordRequired = required; 23446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 23547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller 23647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller @Override 23747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller public void onClick(DialogInterface dialog, int which) { 23847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller if (which == DialogInterface.BUTTON_POSITIVE) { 23947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller setRequirePasswordState(true); 240d553abcb4cd4ee3682ae4e864c06514d65fcb253Udam Saini startLockIntent(); 24147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } else if (which == DialogInterface.BUTTON_NEGATIVE) { 24247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller setRequirePasswordState(false); 24347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 24447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller } 24546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller } 24646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller} 247