diff --git a/res/layout-land/confirm_lock_password.xml b/res/layout-land/confirm_lock_password.xml
index 3d2589c5b83..cad1bfc1ba8 100644
--- a/res/layout-land/confirm_lock_password.xml
+++ b/res/layout-land/confirm_lock_password.xml
@@ -62,7 +62,8 @@
android:layout_height="wrap_content"
android:layout_marginStart="?attr/sudMarginSides"
android:layout_marginEnd="?attr/sudMarginSides"
- android:layout_gravity="center" />
+ android:layout_gravity="center"
+ android:visibility="gone" />
x
+ android:layout_marginEnd="?attr/sudMarginSides" />
+ android:layout_gravity="center"
+ android:visibility="gone" />
+ android:layout_gravity="center"
+ android:visibility="gone" />
+ android:layout_gravity="center"
+ android:visibility="gone" />
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
index 44222047bcb..262a550ebd8 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseFragment.java
@@ -37,6 +37,7 @@ import android.os.Handler;
import android.os.UserHandle;
import android.os.UserManager;
import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@@ -57,7 +58,7 @@ import com.android.settings.core.InstrumentedFragment;
* Base fragment to be shared for PIN/Pattern/Password confirmation fragments.
*/
public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFragment {
-
+ public static final String TAG = ConfirmDeviceCredentialBaseFragment.class.getSimpleName();
public static final String TITLE_TEXT = SETTINGS_PACKAGE_NAME + ".ConfirmCredentials.title";
public static final String HEADER_TEXT = SETTINGS_PACKAGE_NAME + ".ConfirmCredentials.header";
public static final String DETAILS_TEXT = SETTINGS_PACKAGE_NAME + ".ConfirmCredentials.details";
@@ -78,7 +79,8 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
protected boolean mReturnCredentials = false;
protected Button mCancelButton;
- protected Button mForgotButton;
+ /** Button allowing managed profile password reset, null when is not shown. */
+ @Nullable protected Button mForgotButton;
protected int mEffectiveUserId;
protected int mUserId;
protected UserManager mUserManager;
@@ -133,10 +135,18 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
}
getActivity().finish();
});
- mForgotButton = view.findViewById(R.id.forgotButton);
+ setupForgotButtonIfManagedProfile(view);
+ }
+
+ private void setupForgotButtonIfManagedProfile(View view) {
if (mUserManager.isManagedProfile(mUserId)
&& mUserManager.isQuietModeEnabled(UserHandle.of(mUserId))
&& mDevicePolicyManager.canProfileOwnerResetPasswordWhenLocked(mUserId)) {
+ mForgotButton = view.findViewById(R.id.forgotButton);
+ if (mForgotButton == null) {
+ Log.wtf(TAG, "Forgot button not found in managed profile credential dialog");
+ return;
+ }
mForgotButton.setVisibility(View.VISIBLE);
mForgotButton.setOnClickListener(v -> {
final Intent intent = new Intent();
@@ -145,8 +155,6 @@ public abstract class ConfirmDeviceCredentialBaseFragment extends InstrumentedFr
getActivity().startActivity(intent);
getActivity().finish();
});
- } else {
- mForgotButton.setVisibility(View.GONE);
}
}
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index d77fd3a078b..ce8813ffbad 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -267,7 +267,9 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
mHeaderTextView.setAlpha(0f);
mDetailsTextView.setAlpha(0f);
mCancelButton.setAlpha(0f);
- mForgotButton.setAlpha(0f);
+ if (mForgotButton != null) {
+ mForgotButton.setAlpha(0f);
+ }
mPasswordEntry.setAlpha(0f);
mErrorTextView.setAlpha(0f);
}
@@ -279,7 +281,7 @@ public class ConfirmLockPassword extends ConfirmDeviceCredentialBaseActivity {
if (mCancelButton.getVisibility() == View.VISIBLE) {
result.add(mCancelButton);
}
- if (mForgotButton.getVisibility() == View.VISIBLE) {
+ if (mForgotButton != null) {
result.add(mForgotButton);
}
result.add(mPasswordEntry);
diff --git a/src/com/android/settings/password/ConfirmLockPattern.java b/src/com/android/settings/password/ConfirmLockPattern.java
index fd164b8d097..b2afb22da96 100644
--- a/src/com/android/settings/password/ConfirmLockPattern.java
+++ b/src/com/android/settings/password/ConfirmLockPattern.java
@@ -240,7 +240,9 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
super.prepareEnterAnimation();
mHeaderTextView.setAlpha(0f);
mCancelButton.setAlpha(0f);
- mForgotButton.setAlpha(0f);
+ if (mForgotButton != null) {
+ mForgotButton.setAlpha(0f);
+ }
mLockPatternView.setAlpha(0f);
mDetailsTextView.setAlpha(0f);
}
@@ -268,7 +270,7 @@ public class ConfirmLockPattern extends ConfirmDeviceCredentialBaseActivity {
if (mCancelButton.getVisibility() == View.VISIBLE) {
result.add(new ArrayList<>(Collections.singletonList(mCancelButton)));
}
- if (mForgotButton.getVisibility() == View.VISIBLE) {
+ if (mForgotButton != null) {
result.add(new ArrayList<>(Collections.singletonList(mForgotButton)));
}
LockPatternView.CellState[][] cellStates = mLockPatternView.getCellStates();