EncryptionInterstitial.java revision 39b467482d1bf256a111c757e9b7621c6f523271
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;
2547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.content.DialogInterface.OnClickListener;
2646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.content.Intent;
2746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.os.Bundle;
285437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roosimport android.os.UserHandle;
2946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.LayoutInflater;
3046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.View;
3146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.ViewGroup;
3247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.view.accessibility.AccessibilityManager;
3346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.widget.RadioButton;
3446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.widget.TextView;
3546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
3639b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport com.android.internal.logging.MetricsLogger;
3739b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport com.android.internal.widget.LockPatternUtils;
3839b467482d1bf256a111c757e9b7621c6f523271Jason Monk
3939b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport java.util.List;
4039b467482d1bf256a111c757e9b7621c6f523271Jason Monk
4146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerpublic class EncryptionInterstitial extends SettingsActivity {
4246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
430973c31db164e09cb5be275cf0f991dd208ee0faMaurice Lam    protected static final String EXTRA_PASSWORD_QUALITY = "extra_password_quality";
440698a216311acd9ab52224602d1a75c08bf89f04Jim Miller    public static final String EXTRA_REQUIRE_PASSWORD = "extra_require_password";
4546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
4646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    @Override
4746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    public Intent getIntent() {
4846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        Intent modIntent = new Intent(super.getIntent());
4946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        modIntent.putExtra(EXTRA_SHOW_FRAGMENT, EncryptionInterstitialFragment.class.getName());
5046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        return modIntent;
5146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
5246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
5346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    @Override
5446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    protected boolean isValidFragment(String fragmentName) {
5546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        return EncryptionInterstitialFragment.class.getName().equals(fragmentName);
5646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
5746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
580698a216311acd9ab52224602d1a75c08bf89f04Jim Miller    public static Intent createStartIntent(Context ctx, int quality,
590698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            boolean requirePasswordDefault) {
6046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        return new Intent(ctx, EncryptionInterstitial.class)
6146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, true)
6246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PREFS_SET_BACK_TEXT, (String) null)
6346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PREFS_SET_NEXT_TEXT, ctx.getString(
6446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                        R.string.encryption_continue_button))
6546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PASSWORD_QUALITY, quality)
660698a216311acd9ab52224602d1a75c08bf89f04Jim Miller                .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header)
670698a216311acd9ab52224602d1a75c08bf89f04Jim Miller                .putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault);
6846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
6946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
7046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
7147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            implements View.OnClickListener, OnClickListener {
7246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
7347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        private static final int ACCESSIBILITY_WARNING_DIALOG = 1;
7446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        private RadioButton mRequirePasswordToDecryptButton;
7546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        private RadioButton mDontRequirePasswordToDecryptButton;
7646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        private TextView mEncryptionMessage;
770698a216311acd9ab52224602d1a75c08bf89f04Jim Miller        private boolean mPasswordRequired;
7846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
7946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        @Override
808a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        protected int getMetricsCategory() {
818a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren            return MetricsLogger.ENCRYPTION;
828a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        }
838a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
848a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        @Override
8546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        public View onCreateView(LayoutInflater inflater, ViewGroup container,
8646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                Bundle savedInstanceState) {
877e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam            return inflater.inflate(R.layout.encryption_interstitial, container, false);
887e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam        }
897e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam
907e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam        @Override
917e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam        public void onViewCreated(View view, Bundle savedInstanceState) {
927e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam            super.onViewCreated(view, savedInstanceState);
9346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mRequirePasswordToDecryptButton =
9446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    (RadioButton) view.findViewById(R.id.encrypt_require_password);
9546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mDontRequirePasswordToDecryptButton =
9646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    (RadioButton) view.findViewById(R.id.encrypt_dont_require_password);
9746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mEncryptionMessage =
9846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    (TextView) view.findViewById(R.id.encryption_message);
99c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam            boolean forFingerprint = getActivity().getIntent().getBooleanExtra(
100c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
10146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            int quality = getActivity().getIntent().getIntExtra(EXTRA_PASSWORD_QUALITY, 0);
10246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            final int msgId;
10346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            final int enableId;
10446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            final int disableId;
10546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            switch (quality) {
10646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
107c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    msgId = forFingerprint ?
108c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pattern_for_fingerprint :
109c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pattern;
11046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    enableId = R.string.encrypt_require_pattern;
11146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    disableId = R.string.encrypt_dont_require_pattern;
11246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    break;
11346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
11446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
115c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    msgId = forFingerprint ?
116c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pin_for_fingerprint :
117c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pin;
11846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    enableId = R.string.encrypt_require_pin;
11946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    disableId = R.string.encrypt_dont_require_pin;
12046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    break;
12146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                default:
122c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    msgId = forFingerprint ?
123c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_password_for_fingerprint :
124c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_password;
12546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    enableId = R.string.encrypt_require_password;
12646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    disableId = R.string.encrypt_dont_require_password;
12746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    break;
12846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            }
12946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mEncryptionMessage.setText(msgId);
1300698a216311acd9ab52224602d1a75c08bf89f04Jim Miller
13146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mRequirePasswordToDecryptButton.setOnClickListener(this);
13246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mRequirePasswordToDecryptButton.setText(enableId);
1330698a216311acd9ab52224602d1a75c08bf89f04Jim Miller
13446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mDontRequirePasswordToDecryptButton.setOnClickListener(this);
13546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mDontRequirePasswordToDecryptButton.setText(disableId);
1360698a216311acd9ab52224602d1a75c08bf89f04Jim Miller
13747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            setRequirePasswordState(getActivity().getIntent().getBooleanExtra(
13847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    EXTRA_REQUIRE_PASSWORD, true));
13946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        }
14046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
14146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        @Override
1420698a216311acd9ab52224602d1a75c08bf89f04Jim Miller        public void onClick(View v) {
14347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            if (v == mRequirePasswordToDecryptButton) {
14447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled();
14547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                if (accEn && !mPasswordRequired) {
14647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    setRequirePasswordState(false); // clear the UI state
14747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    showDialog(ACCESSIBILITY_WARNING_DIALOG);
14847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                } else {
14947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    setRequirePasswordState(true);
15047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                }
15147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            } else {
15247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                setRequirePasswordState(false);
15347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            }
15447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        }
15547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller
15647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        @Override
15747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        public Dialog onCreateDialog(int dialogId) {
15847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            switch(dialogId) {
15947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                case ACCESSIBILITY_WARNING_DIALOG: {
16047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    final int quality = new LockPatternUtils(getActivity())
1615437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos                            .getKeyguardStoredPasswordQuality(UserHandle.myUserId());
16247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    final int titleId;
16347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    final int messageId;
16447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    switch (quality) {
16547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
16647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            titleId = R.string.encrypt_talkback_dialog_require_pattern;
16747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            messageId = R.string.encrypt_talkback_dialog_message_pattern;
16847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            break;
16947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
17047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
17147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            titleId = R.string.encrypt_talkback_dialog_require_pin;
17247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            messageId = R.string.encrypt_talkback_dialog_message_pin;
17347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            break;
17447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        default:
17547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            titleId = R.string.encrypt_talkback_dialog_require_password;
17647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            messageId = R.string.encrypt_talkback_dialog_message_password;
17747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            break;
17847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    }
179aa0376759873893197a0109025fd4ec8beca5929Jim Miller
180aa0376759873893197a0109025fd4ec8beca5929Jim Miller
181aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    List<AccessibilityServiceInfo> list =
182aa0376759873893197a0109025fd4ec8beca5929Jim Miller                            AccessibilityManager.getInstance(getActivity())
183aa0376759873893197a0109025fd4ec8beca5929Jim Miller                            .getEnabledAccessibilityServiceList(
184aa0376759873893197a0109025fd4ec8beca5929Jim Miller                                    AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
185aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    final CharSequence exampleAccessibility;
186aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    if (list.isEmpty()) {
187aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        // This should never happen.  But we shouldn't crash
188aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        exampleAccessibility = "";
189aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    } else {
190aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        exampleAccessibility = list.get(0).getResolveInfo()
191aa0376759873893197a0109025fd4ec8beca5929Jim Miller                                .loadLabel(getPackageManager());
192aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    }
19347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    return new AlertDialog.Builder(getActivity())
19447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setTitle(titleId)
195aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        .setMessage(getString(messageId, exampleAccessibility))
19647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setCancelable(true)
19747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setPositiveButton(android.R.string.ok, this)
19847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setNegativeButton(android.R.string.cancel, this)
19947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .create();
20047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                }
20147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                default: throw new IllegalArgumentException();
20247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            }
20346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        }
20446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
20547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        private void setRequirePasswordState(boolean required) {
20647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            mPasswordRequired = required;
20747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            mRequirePasswordToDecryptButton.setChecked(required);
20847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            mDontRequirePasswordToDecryptButton.setChecked(!required);
20947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller
21047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            // Updates value returned by SettingsActivity.onActivityResult().
2110698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            SettingsActivity sa = (SettingsActivity)getActivity();
2120698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            Intent resultIntentData = sa.getResultIntentData();
21359864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller            if (resultIntentData == null) {
21459864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller                resultIntentData = new Intent();
21559864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller                sa.setResultIntentData(resultIntentData);
21659864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller            }
2170698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            resultIntentData.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
21846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        }
21947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller
22047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        @Override
22147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        public void onClick(DialogInterface dialog, int which) {
22247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            if (which == DialogInterface.BUTTON_POSITIVE) {
22347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                setRequirePasswordState(true);
22447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
22547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                setRequirePasswordState(false);
22647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            }
22747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        }
22846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
22946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller}
230