EncryptionInterstitial.java revision 7e831030201fcac9ca0acc9684497dc44cea7023
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
198a963babe2e36b7a41f77b8d2598c97658196e58Chris Wrenimport com.android.internal.logging.MetricsLogger;
2047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport com.android.internal.widget.LockPatternUtils;
2146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport com.android.settings.R;
2246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport com.android.settings.SettingsActivity;
2346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport com.android.settings.SettingsPreferenceFragment;
2446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
25aa0376759873893197a0109025fd4ec8beca5929Jim Millerimport java.util.List;
26aa0376759873893197a0109025fd4ec8beca5929Jim Miller
27aa0376759873893197a0109025fd4ec8beca5929Jim Millerimport android.accessibilityservice.AccessibilityServiceInfo;
2847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.app.AlertDialog;
2947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.app.Dialog;
3046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.app.admin.DevicePolicyManager;
3146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.content.Context;
3247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.content.DialogInterface;
3347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.content.DialogInterface.OnClickListener;
3446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.content.Intent;
3546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.os.Bundle;
365437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roosimport android.os.UserHandle;
3746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.LayoutInflater;
3846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.View;
3946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.view.ViewGroup;
4047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Millerimport android.view.accessibility.AccessibilityManager;
4146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.widget.RadioButton;
4246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerimport android.widget.TextView;
4346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
4446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Millerpublic class EncryptionInterstitial extends SettingsActivity {
4546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
460973c31db164e09cb5be275cf0f991dd208ee0faMaurice Lam    protected static final String EXTRA_PASSWORD_QUALITY = "extra_password_quality";
470698a216311acd9ab52224602d1a75c08bf89f04Jim Miller    public static final String EXTRA_REQUIRE_PASSWORD = "extra_require_password";
4846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
4946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    @Override
5046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    public Intent getIntent() {
5146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        Intent modIntent = new Intent(super.getIntent());
5246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        modIntent.putExtra(EXTRA_SHOW_FRAGMENT, EncryptionInterstitialFragment.class.getName());
5346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        return modIntent;
5446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
5546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
5646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    @Override
5746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    protected boolean isValidFragment(String fragmentName) {
5846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        return EncryptionInterstitialFragment.class.getName().equals(fragmentName);
5946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
6046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
610698a216311acd9ab52224602d1a75c08bf89f04Jim Miller    public static Intent createStartIntent(Context ctx, int quality,
620698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            boolean requirePasswordDefault) {
6346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        return new Intent(ctx, EncryptionInterstitial.class)
6446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, true)
6546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PREFS_SET_BACK_TEXT, (String) null)
6646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PREFS_SET_NEXT_TEXT, ctx.getString(
6746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                        R.string.encryption_continue_button))
6846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                .putExtra(EXTRA_PASSWORD_QUALITY, quality)
690698a216311acd9ab52224602d1a75c08bf89f04Jim Miller                .putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header)
700698a216311acd9ab52224602d1a75c08bf89f04Jim Miller                .putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault);
7146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
7246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
7346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
7447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            implements View.OnClickListener, OnClickListener {
7546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
7647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        private static final int ACCESSIBILITY_WARNING_DIALOG = 1;
7746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        private RadioButton mRequirePasswordToDecryptButton;
7846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        private RadioButton mDontRequirePasswordToDecryptButton;
7946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        private TextView mEncryptionMessage;
800698a216311acd9ab52224602d1a75c08bf89f04Jim Miller        private boolean mPasswordRequired;
8146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
8246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        @Override
838a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        protected int getMetricsCategory() {
848a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren            return MetricsLogger.ENCRYPTION;
858a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        }
868a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
878a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren        @Override
8846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        public View onCreateView(LayoutInflater inflater, ViewGroup container,
8946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                Bundle savedInstanceState) {
907e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam            return inflater.inflate(R.layout.encryption_interstitial, container, false);
917e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam        }
927e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam
937e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam        @Override
947e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam        public void onViewCreated(View view, Bundle savedInstanceState) {
957e831030201fcac9ca0acc9684497dc44cea7023Maurice Lam            super.onViewCreated(view, savedInstanceState);
9646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mRequirePasswordToDecryptButton =
9746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    (RadioButton) view.findViewById(R.id.encrypt_require_password);
9846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mDontRequirePasswordToDecryptButton =
9946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    (RadioButton) view.findViewById(R.id.encrypt_dont_require_password);
10046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mEncryptionMessage =
10146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    (TextView) view.findViewById(R.id.encryption_message);
102c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam            boolean forFingerprint = getActivity().getIntent().getBooleanExtra(
103c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
10446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            int quality = getActivity().getIntent().getIntExtra(EXTRA_PASSWORD_QUALITY, 0);
10546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            final int msgId;
10646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            final int enableId;
10746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            final int disableId;
10846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            switch (quality) {
10946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
110c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    msgId = forFingerprint ?
111c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pattern_for_fingerprint :
112c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pattern;
11346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    enableId = R.string.encrypt_require_pattern;
11446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    disableId = R.string.encrypt_dont_require_pattern;
11546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    break;
11646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
11746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
118c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    msgId = forFingerprint ?
119c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pin_for_fingerprint :
120c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_pin;
12146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    enableId = R.string.encrypt_require_pin;
12246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    disableId = R.string.encrypt_dont_require_pin;
12346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    break;
12446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                default:
125c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                    msgId = forFingerprint ?
126c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_password_for_fingerprint :
127c0e7879684d7d9c5cd102b124ee8cf1a2637d49dMaurice Lam                            R.string.encryption_interstitial_message_password;
12846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    enableId = R.string.encrypt_require_password;
12946c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    disableId = R.string.encrypt_dont_require_password;
13046c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller                    break;
13146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            }
13246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mEncryptionMessage.setText(msgId);
1330698a216311acd9ab52224602d1a75c08bf89f04Jim Miller
13446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mRequirePasswordToDecryptButton.setOnClickListener(this);
13546c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mRequirePasswordToDecryptButton.setText(enableId);
1360698a216311acd9ab52224602d1a75c08bf89f04Jim Miller
13746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mDontRequirePasswordToDecryptButton.setOnClickListener(this);
13846c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller            mDontRequirePasswordToDecryptButton.setText(disableId);
1390698a216311acd9ab52224602d1a75c08bf89f04Jim Miller
14047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            setRequirePasswordState(getActivity().getIntent().getBooleanExtra(
14147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    EXTRA_REQUIRE_PASSWORD, true));
14246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        }
14346c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
14446c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        @Override
1450698a216311acd9ab52224602d1a75c08bf89f04Jim Miller        public void onClick(View v) {
14647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            if (v == mRequirePasswordToDecryptButton) {
14747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled();
14847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                if (accEn && !mPasswordRequired) {
14947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    setRequirePasswordState(false); // clear the UI state
15047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    showDialog(ACCESSIBILITY_WARNING_DIALOG);
15147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                } else {
15247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    setRequirePasswordState(true);
15347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                }
15447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            } else {
15547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                setRequirePasswordState(false);
15647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            }
15747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        }
15847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller
15947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        @Override
16047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        public Dialog onCreateDialog(int dialogId) {
16147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            switch(dialogId) {
16247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                case ACCESSIBILITY_WARNING_DIALOG: {
16347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    final int quality = new LockPatternUtils(getActivity())
1645437588abd69bf3eff59684528aaf50e09b6cffcAdrian Roos                            .getKeyguardStoredPasswordQuality(UserHandle.myUserId());
16547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    final int titleId;
16647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    final int messageId;
16747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    switch (quality) {
16847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
16947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            titleId = R.string.encrypt_talkback_dialog_require_pattern;
17047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            messageId = R.string.encrypt_talkback_dialog_message_pattern;
17147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            break;
17247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
17347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
17447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            titleId = R.string.encrypt_talkback_dialog_require_pin;
17547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            messageId = R.string.encrypt_talkback_dialog_message_pin;
17647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            break;
17747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        default:
17847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            titleId = R.string.encrypt_talkback_dialog_require_password;
17947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            messageId = R.string.encrypt_talkback_dialog_message_password;
18047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                            break;
18147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    }
182aa0376759873893197a0109025fd4ec8beca5929Jim Miller
183aa0376759873893197a0109025fd4ec8beca5929Jim Miller
184aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    List<AccessibilityServiceInfo> list =
185aa0376759873893197a0109025fd4ec8beca5929Jim Miller                            AccessibilityManager.getInstance(getActivity())
186aa0376759873893197a0109025fd4ec8beca5929Jim Miller                            .getEnabledAccessibilityServiceList(
187aa0376759873893197a0109025fd4ec8beca5929Jim Miller                                    AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
188aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    final CharSequence exampleAccessibility;
189aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    if (list.isEmpty()) {
190aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        // This should never happen.  But we shouldn't crash
191aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        exampleAccessibility = "";
192aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    } else {
193aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        exampleAccessibility = list.get(0).getResolveInfo()
194aa0376759873893197a0109025fd4ec8beca5929Jim Miller                                .loadLabel(getPackageManager());
195aa0376759873893197a0109025fd4ec8beca5929Jim Miller                    }
19647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                    return new AlertDialog.Builder(getActivity())
19747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setTitle(titleId)
198aa0376759873893197a0109025fd4ec8beca5929Jim Miller                        .setMessage(getString(messageId, exampleAccessibility))
19947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setCancelable(true)
20047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setPositiveButton(android.R.string.ok, this)
20147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .setNegativeButton(android.R.string.cancel, this)
20247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                        .create();
20347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                }
20447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                default: throw new IllegalArgumentException();
20547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            }
20646c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        }
20746c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller
20847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        private void setRequirePasswordState(boolean required) {
20947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            mPasswordRequired = required;
21047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            mRequirePasswordToDecryptButton.setChecked(required);
21147adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            mDontRequirePasswordToDecryptButton.setChecked(!required);
21247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller
21347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            // Updates value returned by SettingsActivity.onActivityResult().
2140698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            SettingsActivity sa = (SettingsActivity)getActivity();
2150698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            Intent resultIntentData = sa.getResultIntentData();
21659864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller            if (resultIntentData == null) {
21759864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller                resultIntentData = new Intent();
21859864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller                sa.setResultIntentData(resultIntentData);
21959864d2ce7801251d98c8f5fc3683eab556948d8Jim Miller            }
2200698a216311acd9ab52224602d1a75c08bf89f04Jim Miller            resultIntentData.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
22146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller        }
22247adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller
22347adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        @Override
22447adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        public void onClick(DialogInterface dialog, int which) {
22547adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            if (which == DialogInterface.BUTTON_POSITIVE) {
22647adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                setRequirePasswordState(true);
22747adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            } else if (which == DialogInterface.BUTTON_NEGATIVE) {
22847adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller                setRequirePasswordState(false);
22947adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller            }
23047adff0a8bb4aeeefe6e3d3efc0b2579f6754af0Jim Miller        }
23146c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller    }
23246c7f6d6f32efec26bc9343f591ad1ddbe8f3b4aJim Miller}
233