Allows the user to go back to Encryption Screen
bug:22907221 Change-Id: I766407f4f130ac618da178e1b6c04029025db8f2
This commit is contained in:
@@ -220,13 +220,17 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
&& !dpm.getDoNotAskCredentialsOnBoot()) {
|
||||
mEncryptionRequestQuality = quality;
|
||||
mEncryptionRequestDisabled = disabled;
|
||||
// Get the intent that the encryption interstitial should start for creating
|
||||
// the new unlock method.
|
||||
Intent unlockMethodIntent = getIntentForUnlockMethod(quality, disabled);
|
||||
final Context context = getActivity();
|
||||
// If accessibility is enabled and the user hasn't seen this dialog before, set the
|
||||
// default state to agree with that which is compatible with accessibility
|
||||
// (password not required).
|
||||
final boolean accEn = AccessibilityManager.getInstance(context).isEnabled();
|
||||
final boolean required = mLockPatternUtils.isCredentialRequiredToDecrypt(!accEn);
|
||||
Intent intent = getEncryptionInterstitialIntent(context, quality, required);
|
||||
Intent intent = getEncryptionInterstitialIntent(context, quality, required,
|
||||
unlockMethodIntent);
|
||||
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT,
|
||||
mForFingerprint);
|
||||
startActivityForResult(intent, ENABLE_ENCRYPTION_REQUEST);
|
||||
@@ -246,9 +250,8 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
updatePreferencesOrFinish();
|
||||
} else if (requestCode == ENABLE_ENCRYPTION_REQUEST
|
||||
&& resultCode == Activity.RESULT_OK) {
|
||||
mRequirePassword = data.getBooleanExtra(
|
||||
EncryptionInterstitial.EXTRA_REQUIRE_PASSWORD, true);
|
||||
updateUnlockMethodAndFinish(mEncryptionRequestQuality, mEncryptionRequestDisabled);
|
||||
getActivity().setResult(resultCode, data);
|
||||
finish();
|
||||
} else if (requestCode == CHOOSE_LOCK_REQUEST) {
|
||||
getActivity().setResult(resultCode, data);
|
||||
finish();
|
||||
@@ -451,8 +454,9 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
}
|
||||
|
||||
protected Intent getEncryptionInterstitialIntent(Context context, int quality,
|
||||
boolean required) {
|
||||
return EncryptionInterstitial.createStartIntent(context, quality, required);
|
||||
boolean required, Intent unlockMethodIntent) {
|
||||
return EncryptionInterstitial.createStartIntent(context, quality, required,
|
||||
unlockMethodIntent);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -471,34 +475,13 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
}
|
||||
|
||||
quality = upgradeQuality(quality);
|
||||
Intent intent = getIntentForUnlockMethod(quality, disabled);
|
||||
if (intent != null) {
|
||||
startActivityForResult(intent, CHOOSE_LOCK_REQUEST);
|
||||
return;
|
||||
}
|
||||
|
||||
final Context context = getActivity();
|
||||
if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) {
|
||||
int minLength = mDPM.getPasswordMinimumLength(null);
|
||||
if (minLength < MIN_PASSWORD_LENGTH) {
|
||||
minLength = MIN_PASSWORD_LENGTH;
|
||||
}
|
||||
final int maxLength = mDPM.getPasswordMaximumLength(quality);
|
||||
Intent intent;
|
||||
if (mHasChallenge) {
|
||||
intent = getLockPasswordIntent(context, quality, minLength,
|
||||
maxLength, mRequirePassword, mChallenge, mUserId);
|
||||
} else {
|
||||
intent = getLockPasswordIntent(context, quality, minLength,
|
||||
maxLength, mRequirePassword, mUserPassword, mUserId);
|
||||
}
|
||||
startActivityForResult(intent, CHOOSE_LOCK_REQUEST);
|
||||
} else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
|
||||
Intent intent;
|
||||
if (mHasChallenge) {
|
||||
intent = getLockPatternIntent(context, mRequirePassword,
|
||||
mChallenge, mUserId);
|
||||
} else {
|
||||
intent = getLockPatternIntent(context, mRequirePassword,
|
||||
mUserPassword, mUserId);
|
||||
}
|
||||
startActivityForResult(intent, CHOOSE_LOCK_REQUEST);
|
||||
} else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
|
||||
if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) {
|
||||
mChooseLockSettingsHelper.utils().clearLock(mUserId);
|
||||
mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId);
|
||||
removeAllFingerprintTemplatesAndFinish();
|
||||
@@ -508,6 +491,34 @@ public class ChooseLockGeneric extends SettingsActivity {
|
||||
}
|
||||
}
|
||||
|
||||
private Intent getIntentForUnlockMethod(int quality, boolean disabled) {
|
||||
Intent intent = null;
|
||||
final Context context = getActivity();
|
||||
if (quality >= DevicePolicyManager.PASSWORD_QUALITY_NUMERIC) {
|
||||
int minLength = mDPM.getPasswordMinimumLength(null);
|
||||
if (minLength < MIN_PASSWORD_LENGTH) {
|
||||
minLength = MIN_PASSWORD_LENGTH;
|
||||
}
|
||||
final int maxLength = mDPM.getPasswordMaximumLength(quality);
|
||||
if (mHasChallenge) {
|
||||
intent = getLockPasswordIntent(context, quality, minLength,
|
||||
maxLength, mRequirePassword, mChallenge, mUserId);
|
||||
} else {
|
||||
intent = getLockPasswordIntent(context, quality, minLength,
|
||||
maxLength, mRequirePassword, mUserPassword, mUserId);
|
||||
}
|
||||
} else if (quality == DevicePolicyManager.PASSWORD_QUALITY_SOMETHING) {
|
||||
if (mHasChallenge) {
|
||||
intent = getLockPatternIntent(context, mRequirePassword,
|
||||
mChallenge, mUserId);
|
||||
} else {
|
||||
intent = getLockPatternIntent(context, mRequirePassword,
|
||||
mUserPassword, mUserId);
|
||||
}
|
||||
}
|
||||
return intent;
|
||||
}
|
||||
|
||||
private void removeAllFingerprintTemplatesAndFinish() {
|
||||
if (mFingerprintManager != null && mFingerprintManager.isHardwareDetected()
|
||||
&& mFingerprintManager.getEnrolledFingerprints().size() > 0) {
|
||||
|
@@ -26,10 +26,12 @@ import android.content.DialogInterface.OnClickListener;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.UserHandle;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.view.accessibility.AccessibilityManager;
|
||||
import android.widget.Button;
|
||||
import android.widget.RadioButton;
|
||||
import android.widget.TextView;
|
||||
|
||||
@@ -39,9 +41,12 @@ import com.android.internal.widget.LockPatternUtils;
|
||||
import java.util.List;
|
||||
|
||||
public class EncryptionInterstitial extends SettingsActivity {
|
||||
private final static String TAG = EncryptionInterstitial.class.getSimpleName();
|
||||
|
||||
protected static final String EXTRA_PASSWORD_QUALITY = "extra_password_quality";
|
||||
protected static final String EXTRA_UNLOCK_METHOD_INTENT = "extra_unlock_method_intent";
|
||||
public static final String EXTRA_REQUIRE_PASSWORD = "extra_require_password";
|
||||
private static final int CHOOSE_LOCK_REQUEST = 100;
|
||||
|
||||
@Override
|
||||
public Intent getIntent() {
|
||||
@@ -56,7 +61,7 @@ public class EncryptionInterstitial extends SettingsActivity {
|
||||
}
|
||||
|
||||
public static Intent createStartIntent(Context ctx, int quality,
|
||||
boolean requirePasswordDefault) {
|
||||
boolean requirePasswordDefault, Intent unlockMethodIntent) {
|
||||
return new Intent(ctx, EncryptionInterstitial.class)
|
||||
.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, true)
|
||||
.putExtra(EXTRA_PREFS_SET_BACK_TEXT, (String) null)
|
||||
@@ -64,7 +69,8 @@ public class EncryptionInterstitial extends SettingsActivity {
|
||||
R.string.encryption_continue_button))
|
||||
.putExtra(EXTRA_PASSWORD_QUALITY, quality)
|
||||
.putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, R.string.encryption_interstitial_header)
|
||||
.putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault);
|
||||
.putExtra(EXTRA_REQUIRE_PASSWORD, requirePasswordDefault)
|
||||
.putExtra(EXTRA_UNLOCK_METHOD_INTENT, unlockMethodIntent);
|
||||
}
|
||||
|
||||
public static class EncryptionInterstitialFragment extends SettingsPreferenceFragment
|
||||
@@ -75,6 +81,7 @@ public class EncryptionInterstitial extends SettingsActivity {
|
||||
private RadioButton mDontRequirePasswordToDecryptButton;
|
||||
private TextView mEncryptionMessage;
|
||||
private boolean mPasswordRequired;
|
||||
private Intent mUnlockMethodIntent;
|
||||
|
||||
@Override
|
||||
protected int getMetricsCategory() {
|
||||
@@ -98,7 +105,9 @@ public class EncryptionInterstitial extends SettingsActivity {
|
||||
(TextView) view.findViewById(R.id.encryption_message);
|
||||
boolean forFingerprint = getActivity().getIntent().getBooleanExtra(
|
||||
ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, false);
|
||||
int quality = getActivity().getIntent().getIntExtra(EXTRA_PASSWORD_QUALITY, 0);
|
||||
Intent intent = getActivity().getIntent();
|
||||
final int quality = intent.getIntExtra(EXTRA_PASSWORD_QUALITY, 0);
|
||||
mUnlockMethodIntent = (Intent) intent.getParcelableExtra(EXTRA_UNLOCK_METHOD_INTENT);
|
||||
final int msgId;
|
||||
final int enableId;
|
||||
final int disableId;
|
||||
@@ -136,6 +145,36 @@ public class EncryptionInterstitial extends SettingsActivity {
|
||||
|
||||
setRequirePasswordState(getActivity().getIntent().getBooleanExtra(
|
||||
EXTRA_REQUIRE_PASSWORD, true));
|
||||
|
||||
Button nextButton = getNextButton();
|
||||
if (nextButton != null) {
|
||||
nextButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
startLockIntent();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
protected void startLockIntent() {
|
||||
if (mUnlockMethodIntent != null) {
|
||||
mUnlockMethodIntent.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
|
||||
startActivityForResult(mUnlockMethodIntent, CHOOSE_LOCK_REQUEST);
|
||||
} else {
|
||||
Log.wtf(TAG, "no unlock intent to start");
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
if (requestCode == CHOOSE_LOCK_REQUEST &&
|
||||
resultCode == RESULT_FIRST_USER) {
|
||||
getActivity().setResult(RESULT_OK, data);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -206,15 +245,6 @@ public class EncryptionInterstitial extends SettingsActivity {
|
||||
mPasswordRequired = required;
|
||||
mRequirePasswordToDecryptButton.setChecked(required);
|
||||
mDontRequirePasswordToDecryptButton.setChecked(!required);
|
||||
|
||||
// Updates value returned by SettingsActivity.onActivityResult().
|
||||
SettingsActivity sa = (SettingsActivity)getActivity();
|
||||
Intent resultIntentData = sa.getResultIntentData();
|
||||
if (resultIntentData == null) {
|
||||
resultIntentData = new Intent();
|
||||
sa.setResultIntentData(resultIntentData);
|
||||
}
|
||||
resultIntentData.putExtra(EXTRA_REQUIRE_PASSWORD, mPasswordRequired);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -170,9 +170,9 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
|
||||
|
||||
@Override
|
||||
protected Intent getEncryptionInterstitialIntent(Context context, int quality,
|
||||
boolean required) {
|
||||
boolean required, Intent unlockMethodIntent) {
|
||||
Intent intent = SetupEncryptionInterstitial.createStartIntent(context, quality,
|
||||
required);
|
||||
required, unlockMethodIntent);
|
||||
SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
|
||||
return intent;
|
||||
}
|
||||
|
@@ -38,9 +38,9 @@ import com.android.setupwizardlib.view.NavigationBar;
|
||||
public class SetupEncryptionInterstitial extends EncryptionInterstitial {
|
||||
|
||||
public static Intent createStartIntent(Context ctx, int quality,
|
||||
boolean requirePasswordDefault) {
|
||||
boolean requirePasswordDefault, Intent unlockMethodIntent) {
|
||||
Intent startIntent = EncryptionInterstitial.createStartIntent(ctx, quality,
|
||||
requirePasswordDefault);
|
||||
requirePasswordDefault, unlockMethodIntent);
|
||||
startIntent.setClass(ctx, SetupEncryptionInterstitial.class);
|
||||
startIntent.putExtra(EXTRA_PREFS_SHOW_BUTTON_BAR, false)
|
||||
.putExtra(EXTRA_SHOW_FRAGMENT_TITLE_RESID, -1);
|
||||
@@ -102,12 +102,7 @@ public class SetupEncryptionInterstitial extends EncryptionInterstitial {
|
||||
|
||||
@Override
|
||||
public void onNavigateNext() {
|
||||
final SetupEncryptionInterstitial activity =
|
||||
(SetupEncryptionInterstitial) getActivity();
|
||||
if (activity != null) {
|
||||
activity.setResult(RESULT_OK, activity.getResultIntentData());
|
||||
finish();
|
||||
}
|
||||
startLockIntent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user