Loading src/com/android/settings/ChooseLockGeneric.java +31 −20 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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(); Loading Loading @@ -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); } /** Loading @@ -471,7 +475,24 @@ public class ChooseLockGeneric extends SettingsActivity { } quality = upgradeQuality(quality); Intent intent = getIntentForUnlockMethod(quality, disabled); if (intent != null) { startActivityForResult(intent, CHOOSE_LOCK_REQUEST); return; } if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { mChooseLockSettingsHelper.utils().clearLock(mUserId); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId); removeAllFingerprintTemplatesAndFinish(); getActivity().setResult(Activity.RESULT_OK); } else { removeAllFingerprintTemplatesAndFinish(); } } 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); Loading @@ -479,7 +500,6 @@ public class ChooseLockGeneric extends SettingsActivity { minLength = MIN_PASSWORD_LENGTH; } final int maxLength = mDPM.getPasswordMaximumLength(quality); Intent intent; if (mHasChallenge) { intent = getLockPasswordIntent(context, quality, minLength, maxLength, mRequirePassword, mChallenge, mUserId); Loading @@ -487,9 +507,7 @@ public class ChooseLockGeneric extends SettingsActivity { 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); Loading @@ -497,15 +515,8 @@ public class ChooseLockGeneric extends SettingsActivity { intent = getLockPatternIntent(context, mRequirePassword, mUserPassword, mUserId); } startActivityForResult(intent, CHOOSE_LOCK_REQUEST); } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { mChooseLockSettingsHelper.utils().clearLock(mUserId); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId); removeAllFingerprintTemplatesAndFinish(); getActivity().setResult(Activity.RESULT_OK); } else { removeAllFingerprintTemplatesAndFinish(); } return intent; } private void removeAllFingerprintTemplatesAndFinish() { Loading src/com/android/settings/EncryptionInterstitial.java +42 −12 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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() { Loading @@ -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) Loading @@ -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 Loading @@ -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() { Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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 Loading src/com/android/settings/SetupChooseLockGeneric.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading src/com/android/settings/SetupEncryptionInterstitial.java +3 −8 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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(); } } } Loading
src/com/android/settings/ChooseLockGeneric.java +31 −20 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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(); Loading Loading @@ -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); } /** Loading @@ -471,7 +475,24 @@ public class ChooseLockGeneric extends SettingsActivity { } quality = upgradeQuality(quality); Intent intent = getIntentForUnlockMethod(quality, disabled); if (intent != null) { startActivityForResult(intent, CHOOSE_LOCK_REQUEST); return; } if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { mChooseLockSettingsHelper.utils().clearLock(mUserId); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId); removeAllFingerprintTemplatesAndFinish(); getActivity().setResult(Activity.RESULT_OK); } else { removeAllFingerprintTemplatesAndFinish(); } } 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); Loading @@ -479,7 +500,6 @@ public class ChooseLockGeneric extends SettingsActivity { minLength = MIN_PASSWORD_LENGTH; } final int maxLength = mDPM.getPasswordMaximumLength(quality); Intent intent; if (mHasChallenge) { intent = getLockPasswordIntent(context, quality, minLength, maxLength, mRequirePassword, mChallenge, mUserId); Loading @@ -487,9 +507,7 @@ public class ChooseLockGeneric extends SettingsActivity { 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); Loading @@ -497,15 +515,8 @@ public class ChooseLockGeneric extends SettingsActivity { intent = getLockPatternIntent(context, mRequirePassword, mUserPassword, mUserId); } startActivityForResult(intent, CHOOSE_LOCK_REQUEST); } else if (quality == DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED) { mChooseLockSettingsHelper.utils().clearLock(mUserId); mChooseLockSettingsHelper.utils().setLockScreenDisabled(disabled, mUserId); removeAllFingerprintTemplatesAndFinish(); getActivity().setResult(Activity.RESULT_OK); } else { removeAllFingerprintTemplatesAndFinish(); } return intent; } private void removeAllFingerprintTemplatesAndFinish() { Loading
src/com/android/settings/EncryptionInterstitial.java +42 −12 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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() { Loading @@ -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) Loading @@ -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 Loading @@ -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() { Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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 Loading
src/com/android/settings/SetupChooseLockGeneric.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; } Loading
src/com/android/settings/SetupEncryptionInterstitial.java +3 −8 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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(); } } }