Relace BuildCompat.isAtLeastS to check Build.VERSION.SDK_INT

Fixes: 191227729
Test: robotest & manual
Change-Id: I4b865b7de33a6801783dd645213fef0cda8d4dd2
This commit is contained in:
Edgar Wang
2021-06-17 17:14:02 +08:00
parent fdf3e95eaa
commit bff4a440cc
10 changed files with 80 additions and 13 deletions

View File

@@ -14,7 +14,8 @@ android_library {
resource_dirs: ["res"],
static_libs: [
"androidx.preference_preference",
"androidx.preference_preference",
"SettingsLibUtils",
],
sdk_version: "system_current",

View File

@@ -27,10 +27,11 @@ import android.widget.Button;
import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import androidx.core.os.BuildCompat;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import com.android.settingslib.utils.BuildCompatUtils;
import java.util.ArrayList;
import java.util.List;
@@ -94,7 +95,7 @@ public class ActionButtonsPreference extends Preference {
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
final boolean allowedDivider = !BuildCompat.isAtLeastS();
final boolean allowedDivider = !BuildCompatUtils.isAtLeastS();
holder.setDividerAllowedAbove(allowedDivider);
holder.setDividerAllowedBelow(allowedDivider);

View File

@@ -16,6 +16,7 @@ android_library {
static_libs: [
"androidx.preference_preference",
"SettingsLibSettingsTheme",
"SettingsLibUtils",
],
sdk_version: "system_current",

View File

@@ -35,10 +35,11 @@ import androidx.annotation.ColorInt;
import androidx.annotation.ColorRes;
import androidx.annotation.RequiresApi;
import androidx.annotation.StringRes;
import androidx.core.os.BuildCompat;
import androidx.preference.Preference;
import androidx.preference.PreferenceViewHolder;
import com.android.settingslib.utils.BuildCompatUtils;
/**
* Banner message is a banner displaying important information (permission request, page error etc),
* and provide actions for user to address. It requires a user action to be dismissed.
@@ -83,7 +84,7 @@ public class BannerMessagePreference extends Preference {
}
private static final String TAG = "BannerPreference";
private static final boolean IS_AT_LEAST_S = BuildCompat.isAtLeastS();
private static final boolean IS_AT_LEAST_S = BuildCompatUtils.isAtLeastS();
private final BannerMessagePreference.ButtonInfo mPositiveButtonInfo =
new BannerMessagePreference.ButtonInfo();

View File

@@ -16,8 +16,9 @@ android_library {
static_libs: [
"androidx.preference_preference",
"SettingsLibSettingsTheme",
"SettingsLibUtils",
],
sdk_version: "system_current",
min_sdk_version: "21",
min_sdk_version: "28",
}

View File

@@ -19,7 +19,7 @@
package="com.android.settingslib.widget">
<uses-sdk
android:minSdkVersion="21"
android:minSdkVersion="28"
android:targetSdkVersion="31"/>
</manifest>

View File

@@ -30,7 +30,8 @@ import android.widget.Switch;
import android.widget.TextView;
import androidx.annotation.ColorInt;
import androidx.core.os.BuildCompat;
import com.android.settingslib.utils.BuildCompatUtils;
import java.util.ArrayList;
import java.util.List;
@@ -74,7 +75,7 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec
LayoutInflater.from(context).inflate(R.layout.settingslib_main_switch_bar, this);
if (!BuildCompat.isAtLeastS()) {
if (!BuildCompatUtils.isAtLeastS()) {
final TypedArray a = context.obtainStyledAttributes(
new int[]{android.R.attr.colorAccent});
mBackgroundActivatedColor = a.getColor(0, 0);
@@ -207,7 +208,7 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec
mTextView.setEnabled(enabled);
mSwitch.setEnabled(enabled);
if (BuildCompat.isAtLeastS()) {
if (BuildCompatUtils.isAtLeastS()) {
if (enabled) {
mFrameView.setBackground(isChecked() ? mBackgroundOn : mBackgroundOff);
} else {
@@ -226,7 +227,7 @@ public class MainSwitchBar extends LinearLayout implements CompoundButton.OnChec
}
private void setBackground(boolean isChecked) {
if (!BuildCompat.isAtLeastS()) {
if (!BuildCompatUtils.isAtLeastS()) {
setBackgroundColor(isChecked ? mBackgroundActivatedColor : mBackgroundColor);
} else {
mFrameView.setBackground(isChecked ? mBackgroundOn : mBackgroundOff);

View File

@@ -16,7 +16,7 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.settingslib.widget">
package="com.android.settingslib.utils">
<uses-sdk android:minSdkVersion="21" />

View File

@@ -0,0 +1,61 @@
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.settingslib.utils;
import android.os.Build.VERSION;
/**
* An util class to check whether the current OS version is higher or equal to sdk version of
* device.
*/
public final class BuildCompatUtils {
/**
* Implementation of BuildCompat.isAtLeast*() suitable for use in Settings
*
* <p>This still should try using BuildCompat.isAtLeastR() as source of truth, but also checking
* for VERSION_SDK_INT and VERSION.CODENAME in case when BuildCompat implementation returned
* false. Note that both checks should be >= and not = to make sure that when Android version
* increases (i.e., from R to S), this does not stop working.
*
* <p>Supported configurations:
*
* <ul>
* <li>For current Android release: when new API is not finalized yet (CODENAME = "S", SDK_INT
* = 30|31)
* <li>For current Android release: when new API is finalized (CODENAME = "REL", SDK_INT = 31)
* <li>For next Android release (CODENAME = "T", SDK_INT = 30+)
* </ul>
*
* <p>Note that Build.VERSION_CODES.S cannot be used here until final SDK is available, because
* it is equal to Build.VERSION_CODES.CUR_DEVELOPMENT before API finalization.
*
* @return Whether the current OS version is higher or equal to S.
*/
public static boolean isAtLeastS() {
if (VERSION.SDK_INT < 30) {
return false;
}
return (VERSION.CODENAME.equals("REL") && VERSION.SDK_INT >= 31)
|| (VERSION.CODENAME.length() == 1
&& VERSION.CODENAME.compareTo("S") >= 0
&& VERSION.CODENAME.compareTo("Z") <= 0);
}
private BuildCompatUtils() {}
}

View File

@@ -22,7 +22,7 @@ import android.content.pm.PackageManager;
import android.os.UserManager;
import android.util.Log;
import com.android.settingslib.widget.R;
import com.android.settingslib.utils.R;
public class AppUtils {