Fixes 'learn more' link in ScreenTimeoutSettings

Bug: 227292811
Test: make RunSettingsRoboTests

Change-Id: I0e5678e6760ebd590dfd526f362207776ece3a70
This commit is contained in:
Yi Jiang
2022-04-04 18:48:19 -07:00
parent d191a16c54
commit 284cb1c2b2
2 changed files with 8 additions and 27 deletions

View File

@@ -32,14 +32,8 @@ import android.hardware.SensorPrivacyManager;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
@@ -95,7 +89,7 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
RestrictedLockUtils.EnforcedAdmin mAdmin;
@VisibleForTesting
Preference mDisableOptionsPreference;
FooterPreference mDisableOptionsPreference;
@VisibleForTesting
AdaptiveSleepPermissionPreferenceController mAdaptiveSleepPermissionController;
@@ -228,26 +222,13 @@ public class ScreenTimeoutSettings extends RadioButtonPickerFragment implements
R.string.admin_disabled_other_options));
final String textMoreDetails = getResources().getString(R.string.admin_more_details);
final SpannableString spannableString = new SpannableString(
textDisabledByAdmin + System.lineSeparator()
+ System.lineSeparator() + textMoreDetails);
final ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
}
};
if (textDisabledByAdmin != null && textMoreDetails != null) {
spannableString.setSpan(clickableSpan, textDisabledByAdmin.length() + 1,
textDisabledByAdmin.length() + textMoreDetails.length() + 2,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
mDisableOptionsPreference = new FooterPreference(getContext());
mDisableOptionsPreference.setLayoutResource(R.layout.preference_footer);
mDisableOptionsPreference.setTitle(spannableString);
mDisableOptionsPreference.setTitle(textDisabledByAdmin);
mDisableOptionsPreference.setSelectable(false);
mDisableOptionsPreference.setLearnMoreText(textMoreDetails);
mDisableOptionsPreference.setLearnMoreAction(v -> {
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
});
mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
// The 'disabled by admin' preference should always be at the end of the setting page.

View File

@@ -44,12 +44,12 @@ import android.content.res.Resources;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.widget.FooterPreference;
import org.junit.Before;
import org.junit.Test;
@@ -86,7 +86,7 @@ public class ScreenTimeoutSettingsTest {
AdaptiveSleepBatterySaverPreferenceController mAdaptiveSleepBatterySaverPreferenceController;
@Mock
Preference mDisableOptionsPreference;
FooterPreference mDisableOptionsPreference;
@Mock
private PackageManager mPackageManager;