Show warning dialog when Accessibility is enabled
This shows a warning dialog in EncryptionInterstitial when the user selects "Require password". Fixes bug 17881324 Change-Id: Id9336f1f14d38f169205cc72cc42be8de94fae71
This commit is contained in:
@@ -16,17 +16,23 @@
|
|||||||
|
|
||||||
package com.android.settings;
|
package com.android.settings;
|
||||||
|
|
||||||
|
import com.android.internal.widget.LockPatternUtils;
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
|
|
||||||
|
import android.app.AlertDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
import android.app.admin.DevicePolicyManager;
|
import android.app.admin.DevicePolicyManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.DialogInterface.OnClickListener;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.accessibility.AccessibilityManager;
|
||||||
import android.widget.RadioButton;
|
import android.widget.RadioButton;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
@@ -60,8 +66,9 @@ public class EncryptionInterstitial extends SettingsActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
|
public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
|
||||||
implements View.OnClickListener {
|
implements View.OnClickListener, OnClickListener {
|
||||||
|
|
||||||
|
private static final int ACCESSIBILITY_WARNING_DIALOG = 1;
|
||||||
private RadioButton mRequirePasswordToDecryptButton;
|
private RadioButton mRequirePasswordToDecryptButton;
|
||||||
private RadioButton mDontRequirePasswordToDecryptButton;
|
private RadioButton mDontRequirePasswordToDecryptButton;
|
||||||
private TextView mEncryptionMessage;
|
private TextView mEncryptionMessage;
|
||||||
@@ -100,36 +107,89 @@ public class EncryptionInterstitial extends SettingsActivity {
|
|||||||
disableId = R.string.encrypt_dont_require_password;
|
disableId = R.string.encrypt_dont_require_password;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
mPasswordRequired = getActivity().getIntent().getBooleanExtra(
|
|
||||||
EXTRA_REQUIRE_PASSWORD, true);
|
|
||||||
|
|
||||||
mEncryptionMessage.setText(msgId);
|
mEncryptionMessage.setText(msgId);
|
||||||
|
|
||||||
mRequirePasswordToDecryptButton.setOnClickListener(this);
|
mRequirePasswordToDecryptButton.setOnClickListener(this);
|
||||||
mRequirePasswordToDecryptButton.setText(enableId);
|
mRequirePasswordToDecryptButton.setText(enableId);
|
||||||
mRequirePasswordToDecryptButton.setChecked(mPasswordRequired);
|
|
||||||
|
|
||||||
mDontRequirePasswordToDecryptButton.setOnClickListener(this);
|
mDontRequirePasswordToDecryptButton.setOnClickListener(this);
|
||||||
mDontRequirePasswordToDecryptButton.setText(disableId);
|
mDontRequirePasswordToDecryptButton.setText(disableId);
|
||||||
mDontRequirePasswordToDecryptButton.setChecked(!mPasswordRequired);
|
|
||||||
|
|
||||||
updateRequirePasswordIntent();
|
setRequirePasswordState(getActivity().getIntent().getBooleanExtra(
|
||||||
|
EXTRA_REQUIRE_PASSWORD, true));
|
||||||
return view;
|
return view;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
mPasswordRequired = (v == mRequirePasswordToDecryptButton);
|
if (v == mRequirePasswordToDecryptButton) {
|
||||||
updateRequirePasswordIntent();
|
final boolean accEn = AccessibilityManager.getInstance(getActivity()).isEnabled();
|
||||||
|
if (accEn && !mPasswordRequired) {
|
||||||
|
setRequirePasswordState(false); // clear the UI state
|
||||||
|
showDialog(ACCESSIBILITY_WARNING_DIALOG);
|
||||||
|
} else {
|
||||||
|
setRequirePasswordState(true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
setRequirePasswordState(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Updates the value we want to return.
|
@Override
|
||||||
private void updateRequirePasswordIntent() {
|
public Dialog onCreateDialog(int dialogId) {
|
||||||
|
switch(dialogId) {
|
||||||
|
case ACCESSIBILITY_WARNING_DIALOG: {
|
||||||
|
final int quality = new LockPatternUtils(getActivity())
|
||||||
|
.getKeyguardStoredPasswordQuality();
|
||||||
|
final int titleId;
|
||||||
|
final int messageId;
|
||||||
|
switch (quality) {
|
||||||
|
case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
|
||||||
|
titleId = R.string.encrypt_talkback_dialog_require_pattern;
|
||||||
|
messageId = R.string.encrypt_talkback_dialog_message_pattern;
|
||||||
|
break;
|
||||||
|
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
|
||||||
|
case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
|
||||||
|
titleId = R.string.encrypt_talkback_dialog_require_pin;
|
||||||
|
messageId = R.string.encrypt_talkback_dialog_message_pin;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
titleId = R.string.encrypt_talkback_dialog_require_password;
|
||||||
|
messageId = R.string.encrypt_talkback_dialog_message_password;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return new AlertDialog.Builder(getActivity())
|
||||||
|
.setTitle(titleId)
|
||||||
|
.setMessage(messageId)
|
||||||
|
.setCancelable(true)
|
||||||
|
.setPositiveButton(android.R.string.ok, this)
|
||||||
|
.setNegativeButton(android.R.string.cancel, this)
|
||||||
|
.create();
|
||||||
|
}
|
||||||
|
default: throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setRequirePasswordState(boolean required) {
|
||||||
|
mPasswordRequired = required;
|
||||||
|
mRequirePasswordToDecryptButton.setChecked(required);
|
||||||
|
mDontRequirePasswordToDecryptButton.setChecked(!required);
|
||||||
|
|
||||||
|
// Updates value returned by SettingsActivity.onActivityResult().
|
||||||
SettingsActivity sa = (SettingsActivity)getActivity();
|
SettingsActivity sa = (SettingsActivity)getActivity();
|
||||||
Intent resultIntentData = sa.getResultIntentData();
|
Intent resultIntentData = sa.getResultIntentData();
|
||||||
resultIntentData = resultIntentData == null ? new Intent() : resultIntentData;
|
resultIntentData = resultIntentData == null ? new Intent() : resultIntentData;
|
||||||
resultIntentData.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
|
resultIntentData.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
|
||||||
sa.setResultIntentData(resultIntentData);
|
sa.setResultIntentData(resultIntentData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
if (which == DialogInterface.BUTTON_POSITIVE) {
|
||||||
|
setRequirePasswordState(true);
|
||||||
|
} else if (which == DialogInterface.BUTTON_NEGATIVE) {
|
||||||
|
setRequirePasswordState(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user