<?xml version="1.0" encoding="UTF-8"?>
<issues format="5" by="lint 4.1.0" client="cli" variant="all" version="4.1.0">

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        return mContext.getSystemService(UserManager.class).isAdminUser();"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java"
            line="63"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                mContext.getSystemService(CarrierConfigManager.class);"
        errorLine2="                         ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="74"
            column="26"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 23 (current min is 21): `android.telephony.CarrierConfigManager`"
        errorLine1="                mContext.getSystemService(CarrierConfigManager.class);"
        errorLine2="                                          ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="74"
            column="43"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.SubscriptionManager#getDefaultDataSubscriptionId`"
        errorLine1="        final int subId = SubscriptionManager.getDefaultDataSubscriptionId();"
        errorLine2="                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="75"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.telephony.CarrierConfigManager#getConfigForSubId`"
        errorLine1="            config = configManager.getConfigForSubId(subId);"
        errorLine2="                                   ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="78"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.os.BaseBundle#getBoolean`"
        errorLine1="        return config != null &amp;&amp; config.getBoolean("
        errorLine2="                                        ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="80"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.SubscriptionManager#getDefaultDataSubscriptionId`"
        errorLine1="        final int subId = SubscriptionManager.getDefaultDataSubscriptionId();"
        errorLine2="                                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="106"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.telephony.SubscriptionManager#isValidSubscriptionId`"
        errorLine1="        if (!SubscriptionManager.isValidSubscriptionId(subId)) {"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="107"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.telephony.ims.ImsMmTelManager#getRegistrationState`"
        errorLine1="            imsMmTelManager.getRegistrationState(executors, stateCallback);"
        errorLine2="                            ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java"
            line="116"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mCM = context.getSystemService(ConnectivityManager.class);"
        errorLine2="                      ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java"
            line="54"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.ConnectivityManager#getActiveNetwork`"
        errorLine1="        LinkProperties prop = cm.getLinkProperties(cm.getActiveNetwork());"
        errorLine2="                                                      ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java"
            line="96"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.os.Build#getSerial`"
        errorLine1="        this(context, Build.getSerial());"
        errorLine2="                            ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java"
            line="40"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        return mContext.getSystemService(UserManager.class).isAdminUser()"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSimStatusImeiInfoPreferenceController.java"
            line="33"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mWifiManager = context.getSystemService(WifiManager.class);"
        errorLine2="                               ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java"
            line="56"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final ArraySet&lt;ScanResult> mScanResults = new ArraySet&lt;>();"
        errorLine2="                                                      ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="167"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final ArraySet&lt;ScanResult> mExtraScanResults = new ArraySet&lt;>();"
        errorLine2="                                                           ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="174"
            column="60"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#getUniqueId`"
        errorLine1="        mPasspointUniqueId = config.getUniqueId();"
        errorLine2="                                    ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="368"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#getHomeSp`"
        errorLine1="        mFqdn = config.getHomeSp().getFqdn();"
        errorLine2="                       ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="369"
            column="24"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.wifi.hotspot2.pps.HomeSp#getFqdn`"
        errorLine1="        mFqdn = config.getHomeSp().getFqdn();"
        errorLine2="                                   ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="369"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#getHomeSp`"
        errorLine1="        mProviderFriendlyName = config.getHomeSp().getFriendlyName();"
        errorLine2="                                       ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="370"
            column="40"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.wifi.hotspot2.pps.HomeSp#getFriendlyName`"
        errorLine1="        mProviderFriendlyName = config.getHomeSp().getFriendlyName();"
        errorLine2="                                                   ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="370"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#getSubscriptionExpirationTimeMillis`"
        errorLine1="        mSubscriptionExpirationTimeInMillis = config.getSubscriptionExpirationTimeMillis();"
        errorLine2="                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="371"
            column="54"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#isOsuProvisioned`"
        errorLine1="        if (config.isOsuProvisioned()) {"
        errorLine2="                   ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="372"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
        errorLine1="        mPasspointUniqueId = config.getKey();"
        errorLine2="                                    ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="389"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiManager#calculateSignalLevel`"
        errorLine1="        int difference = wifiManager.calculateSignalLevel(other.mRssi)"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="470"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiManager#calculateSignalLevel`"
        errorLine1="                - wifiManager.calculateSignalLevel(mRssi);"
        errorLine2="                              ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="471"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="The type of the for loop iterated value is android.util.ArraySet&lt;android.net.wifi.ScanResult>, which requires API level 23 (current min is 21)"
        errorLine1="            for (ScanResult result : mScanResults) {"
        errorLine2="                                     ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="578"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="The type of the for loop iterated value is android.util.ArraySet&lt;android.net.wifi.ScanResult>, which requires API level 23 (current min is 21)"
        errorLine1="                for (ScanResult result : mScanResults) {"
        errorLine2="                                         ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="667"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
        errorLine1="        if (config.isPasspoint()) {"
        errorLine2="                   ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="695"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
        errorLine1="            return getKey(config.getKey());"
        errorLine2="                                 ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="696"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isWpa3SaeSupported`"
        errorLine1="            if (otherApSecurity == SECURITY_SAE &amp;&amp; getWifiManager().isWpa3SaeSupported()) {"
        errorLine2="                                                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="755"
            column="69"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isEnhancedOpenSupported`"
        errorLine1="            if (otherApSecurity == SECURITY_OWE &amp;&amp; getWifiManager().isEnhancedOpenSupported()) {"
        errorLine2="                                                                    ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="768"
            column="69"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
        errorLine1="        if (config.isPasspoint()) {"
        errorLine2="                   ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="784"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
        errorLine1="            return (isPasspoint() &amp;&amp; config.getKey().equals(mConfig.getKey()));"
        errorLine2="                                            ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="785"
            column="45"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
        errorLine1="            return (isPasspoint() &amp;&amp; config.getKey().equals(mConfig.getKey()));"
        errorLine2="                                                                    ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="785"
            column="69"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isWpa3SaeSupported`"
        errorLine1="            if (configSecurity == SECURITY_SAE &amp;&amp; getWifiManager().isWpa3SaeSupported()) {"
        errorLine2="                                                                   ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="795"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isEnhancedOpenSupported`"
        errorLine1="            if (configSecurity == SECURITY_OWE &amp;&amp; getWifiManager().isEnhancedOpenSupported()) {"
        errorLine2="                                                                   ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="803"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
        errorLine1="        if (!config.isPasspoint() &amp;&amp; !isSameSsidOrBssid(wifiInfo)) {"
        errorLine2="                    ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="817"
            column="21"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isWpa3SaeSupported`"
        errorLine1="                    &amp;&amp; getWifiManager().isWpa3SaeSupported()) {"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="838"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isEnhancedOpenSupported`"
        errorLine1="            if (scanResultSccurity == SECURITY_OWE &amp;&amp; getWifiManager().isEnhancedOpenSupported()) {"
        errorLine2="                                                                       ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="852"
            column="72"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiManager#calculateSignalLevel`"
        errorLine1="        return getWifiManager().calculateSignalLevel(mRssi);"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="892"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="        Set&lt;ScanResult> allScans = new ArraySet&lt;>();"
        errorLine2="                                   ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="905"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `ArraySet` to `Set` requires API level 23 (current min is 21)"
        errorLine1="        Set&lt;ScanResult> allScans = new ArraySet&lt;>();"
        errorLine2="                                   ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="905"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `ArraySet` to `Collection` requires API level 23 (current min is 21)"
        errorLine1="            allScans.addAll(mScanResults);"
        errorLine2="                            ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="907"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `ArraySet` to `Collection` requires API level 23 (current min is 21)"
        errorLine1="            allScans.addAll(mExtraScanResults);"
        errorLine2="                            ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="908"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="The type of the for loop iterated value is android.util.ArraySet&lt;android.net.wifi.ScanResult>, which requires API level 23 (current min is 21)"
        errorLine1="            for (ScanResult result : mScanResults) {"
        errorLine2="                                     ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="934"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
        errorLine1="        if (mConfig != null &amp;&amp; mConfig.isPasspoint()) {"
        errorLine2="                                       ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1069"
            column="40"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#providerFriendlyName`"
        errorLine1="            return mConfig.providerFriendlyName;"
        errorLine2="                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1070"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#providerFriendlyName`"
        errorLine1="            return mConfig.providerFriendlyName;"
        errorLine2="                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1121"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
        errorLine1="        return mConfig != null &amp;&amp; mConfig.isPasspoint();"
        errorLine2="                                          ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1266"
            column="43"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 28 (current min is 21): `android.content.Context#getMainExecutor`"
        errorLine1="                mContext.getMainExecutor(),"
        errorLine2="                         ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1315"
            column="26"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiInfo#getPasspointFqdn`"
        errorLine1="                    &amp;&amp; TextUtils.equals(info.getPasspointFqdn(), mConfig.FQDN)"
        errorLine2="                                             ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1332"
            column="46"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiInfo#getPasspointProviderFriendlyName`"
        errorLine1="                    &amp;&amp; TextUtils.equals(info.getPasspointProviderFriendlyName(),"
        errorLine2="                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1333"
            column="46"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#providerFriendlyName`"
        errorLine1="                    mConfig.providerFriendlyName));"
        errorLine2="                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1334"
            column="21"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                final NetworkScoreManager networkScoreManager = context.getSystemService("
        errorLine2="                                                                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1654"
            column="73"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="            WifiManager wifiManager = context.getSystemService(WifiManager.class);"
        errorLine2="                                              ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1670"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isWpa3SaeSupported`"
        errorLine1="            return wifiManager.isWpa3SaeSupported() ? SECURITY_SAE : SECURITY_PSK;"
        errorLine2="                               ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1753"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isEnhancedOpenSupported`"
        errorLine1="            return wifiManager.isEnhancedOpenSupported() ? SECURITY_OWE : SECURITY_NONE;"
        errorLine2="                               ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1758"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.hotspot2.PasspointConfiguration#getUniqueId`"
        errorLine1="            String uniqueId = passpointConfig.getUniqueId();"
        errorLine2="                                              ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1975"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiConfiguration#getKey`"
        errorLine1="                if (TextUtils.equals(config.getKey(), uniqueId)) {"
        errorLine2="                                            ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java"
            line="1979"
            column="45"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final AccessibilityManager accessibilityManager = ctx.getSystemService("
        errorLine2="                                                              ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/accessibility/AccessibilityButtonHelper.java"
            line="37"
            column="63"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="            enabledServices = new ArraySet&lt;>(1);"
        errorLine2="                              ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/accessibility/AccessibilityUtils.java"
            line="131"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `ArraySet` to `Set` requires API level 23 (current min is 21)"
        errorLine1="            enabledServices = new ArraySet&lt;>(1);"
        errorLine2="                              ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/accessibility/AccessibilityUtils.java"
            line="131"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="            return mContext.getSystemService(UserManager.class);"
        errorLine2="                            ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java"
            line="418"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.content.pm.PackageManager#getModuleInfo`"
        errorLine1="            pm.getModuleInfo(packageName, 0 /* flags */);"
        errorLine2="               ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java"
            line="154"
            column="16"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mUm = mContext.getSystemService(UserManager.class);"
        errorLine2="                       ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="198"
            column="24"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mStats = mContext.getSystemService(StorageStatsManager.class);"
        errorLine2="                          ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="199"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager`"
        errorLine1="        mStats = mContext.getSystemService(StorageStatsManager.class);"
        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="199"
            column="44"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.content.pm.PackageManager#getInstalledModules`"
        errorLine1="        final List&lt;ModuleInfo> moduleInfos = mPm.getInstalledModules(0 /* flags */);"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="215"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.content.pm.ModuleInfo#getPackageName`"
        errorLine1="            mSystemModules.put(info.getPackageName(), info.isHidden());"
        errorLine2="                                    ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="217"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.content.pm.ModuleInfo#isHidden`"
        errorLine1="            mSystemModules.put(info.getPackageName(), info.isHidden());"
        errorLine2="                                                           ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="217"
            column="60"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager#queryStatsForPackage`"
        errorLine1="                                        mStats.queryStatsForPackage("
        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="527"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#storageUuid`"
        errorLine1="                                                entry.info.storageUuid,"
        errorLine2="                                                ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="528"
            column="49"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#storageUuid`"
        errorLine1="                                                entry.info.storageUuid.toString(), entry.info.uid);"
        errorLine2="                                                ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="533"
            column="49"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getDataBytes`"
        errorLine1="                                legacy.dataSize = stats.getDataBytes();"
        errorLine2="                                                        ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="536"
            column="57"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getCacheBytes`"
        errorLine1="                                legacy.cacheSize = Math.min(stats.getCacheBytes(), cacheQuota);"
        errorLine2="                                                                  ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="537"
            column="67"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#storageUuid`"
        errorLine1="                                        mCurComputingSizeUuid = entry.info.storageUuid;"
        errorLine2="                                                                ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="1287"
            column="65"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager#queryStatsForPackage`"
        errorLine1="                                                        mStats.queryStatsForPackage("
        errorLine2="                                                               ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="1295"
            column="64"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getDataBytes`"
        errorLine1="                                                legacy.dataSize = stats.getDataBytes();"
        errorLine2="                                                                        ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="1304"
            column="73"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getCacheBytes`"
        errorLine1="                                                legacy.cacheSize = stats.getCacheBytes();"
        errorLine2="                                                                         ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="1305"
            column="74"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#category`"
        errorLine1="                        || info.info.category == ApplicationInfo.CATEGORY_GAME;"
        errorLine2="                           ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="1927"
            column="28"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#category`"
        errorLine1="                isMusicApp = entry.info.category == ApplicationInfo.CATEGORY_AUDIO;"
        errorLine2="                             ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="1986"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#category`"
        errorLine1="                isMovieApp = entry.info.category == ApplicationInfo.CATEGORY_VIDEO;"
        errorLine2="                             ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="2001"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 26 (current min is 21): `android.content.pm.ApplicationInfo#category`"
        errorLine1="                        isPhotosApp = entry.info.category == ApplicationInfo.CATEGORY_IMAGE;"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java"
            line="2017"
            column="39"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        if (context.getSystemService(PowerManager.class).setPowerSaveModeEnabled(enable)) {"
        errorLine2="                    ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatterySaverUtils.java"
            line="132"
            column="21"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getColor`"
        errorLine1="                context.getColor(R.color.meter_background_color), batteryLevel);"
        errorLine2="                        ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java"
            line="71"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.graphics.drawable.LayerDrawable#setLayerGravity`"
        errorLine1="        drawable.setLayerGravity(0 /* index of deviceDrawable */, Gravity.START);"
        errorLine2="                 ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java"
            line="78"
            column="18"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.graphics.drawable.LayerDrawable#setLayerInsetStart`"
        errorLine1="        drawable.setLayerInsetStart(1 /* index of batteryDrawable */,"
        errorLine2="                 ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java"
            line="80"
            column="18"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.graphics.drawable.LayerDrawable#setLayerInsetTop`"
        errorLine1="        drawable.setLayerInsetTop(1 /* index of batteryDrawable */,"
        errorLine2="                 ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java"
            line="82"
            column="18"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.bluetooth.BluetoothDevice#getAlias`"
        errorLine1="                    + mDevice.getAlias() + &quot;, newProfileState &quot; + newProfileState);"
        errorLine2="                              ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java"
            line="155"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.bluetooth.BluetoothDevice#getAlias`"
        errorLine1="        final String aliasName = mDevice.getAlias();"
        errorLine2="                                         ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java"
            line="431"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.bluetooth.BluetoothDevice#getAlias`"
        errorLine1="        return !TextUtils.isEmpty(mDevice.getAlias());"
        errorLine2="                                          ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java"
            line="489"
            column="43"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.bluetooth.BluetoothDevice#getAlias`"
        errorLine1="            Log.d(TAG, &quot;updating profiles for &quot; + mDevice.getAlias());"
        errorLine2="                                                          ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java"
            line="638"
            column="59"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.bluetooth.BluetoothDevice#getAlias`"
        errorLine1="        String name = device.getAlias();"
        errorLine2="                             ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java"
            line="171"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.res.Resources#getColor`"
        errorLine1="        mImportantConversationColor = context.getResources().getColor("
        errorLine2="                                                             ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/ConversationIconFactory.java"
            line="82"
            column="62"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 25 (current min is 21): `android.content.pm.LauncherApps#getShortcutIconDrawable`"
        errorLine1="        return mLauncherApps.getShortcutIconDrawable(shortcutInfo, mFillResIconDpi);"
        errorLine2="                             ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/ConversationIconFactory.java"
            line="90"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mNetworkStatsManager = context.getSystemService(NetworkStatsManager.class);"
        errorLine2="                                       ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="75"
            column="40"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 23 (current min is 21): `android.app.usage.NetworkStatsManager`"
        errorLine1="        mNetworkStatsManager = context.getSystemService(NetworkStatsManager.class);"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="75"
            column="57"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getRxBytes`"
        errorLine1="                return bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                              ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="171"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getTxBytes`"
        errorLine1="                return bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                                    ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="171"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getEndTimeStamp`"
        errorLine1="            .append(&quot;bucketDuration=&quot;).append(bucket.getEndTimeStamp() - bucket.getStartTimeStamp())"
        errorLine2="                                                     ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="196"
            column="54"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getStartTimeStamp`"
        errorLine1="            .append(&quot;bucketDuration=&quot;).append(bucket.getEndTimeStamp() - bucket.getStartTimeStamp())"
        errorLine2="                                                                                ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="196"
            column="81"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getStartTimeStamp`"
        errorLine1="            .append(&quot;,bucketStart=&quot;).append(bucket.getStartTimeStamp())"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="197"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getRxBytes`"
        errorLine1="            .append(&quot;,rxBytes=&quot;).append(bucket.getRxBytes())"
        errorLine2="                                               ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="198"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getRxPackets`"
        errorLine1="            .append(&quot;,rxPackets=&quot;).append(bucket.getRxPackets())"
        errorLine2="                                                 ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="199"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getTxBytes`"
        errorLine1="            .append(&quot;,txBytes=&quot;).append(bucket.getTxBytes())"
        errorLine2="                                               ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="200"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getTxPackets`"
        errorLine1="            .append(&quot;,txPackets=&quot;).append(bucket.getTxPackets())"
        errorLine2="                                                 ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="201"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.telephony.SubscriptionManager#isValidSubscriptionId`"
        errorLine1="        if (!SubscriptionManager.isValidSubscriptionId(subscriptionId)) {"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="210"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.SubscriptionManager#getDefaultDataSubscriptionId`"
        errorLine1="            subscriptionId = SubscriptionManager.getDefaultDataSubscriptionId();"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="211"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.telephony.SubscriptionManager#isValidSubscriptionId`"
        errorLine1="        if (!SubscriptionManager.isValidSubscriptionId(subscriptionId)) {"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="215"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.telephony.SubscriptionManager#from`"
        errorLine1="            int[] activeSubIds = SubscriptionManager.from(mContext).getActiveSubscriptionIdList();"
        errorLine2="                                                     ~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="216"
            column="54"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        return mContext.getSystemService("
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="222"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.TelephonyManager#createForSubscriptionId`"
        errorLine1="                TelephonyManager.class).createForSubscriptionId(subscriptionId);"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="223"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.telephony.TelephonyManager#setDataEnabled`"
        errorLine1="        getTelephonyManager().setDataEnabled(enabled);"
        errorLine2="                              ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="228"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 31 (current min is 21): `android.telephony.TelephonyManager#isDataCapable`"
        errorLine1="        return getTelephonyManager().isDataCapable()"
        errorLine2="                                     ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="236"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.telephony.TelephonyManager#isDataEnabled`"
        errorLine1="        return getTelephonyManager().isDataEnabled();"
        errorLine2="                                     ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java"
            line="241"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);"
        errorLine2="                                                          ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java"
            line="40"
            column="59"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.telephony.TelephonyManager#getSubscriptionId`"
        errorLine1="        final int mobileDefaultSubId = telephonyManager.getSubscriptionId();"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java"
            line="41"
            column="57"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(SubscriptionManager.class);"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java"
            line="44"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 22 (current min is 21): `android.telephony.SubscriptionManager`"
        errorLine1="                context.getSystemService(SubscriptionManager.class);"
        errorLine2="                                         ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java"
            line="44"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.telephony.SubscriptionInfo#getSubscriptionId`"
        errorLine1="            if ((subInfo != null) &amp;&amp; (subInfo.getSubscriptionId() == subId)) {"
        errorLine2="                                              ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java"
            line="53"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.TelephonyManager#createForSubscriptionId`"
        errorLine1="                .createForSubscriptionId(subId).getMergedImsisFromGroup();"
        errorLine2="                 ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java"
            line="65"
            column="18"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="            final TelephonyManager telephonyManager = context.getSystemService("
        errorLine2="                                                              ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java"
            line="182"
            column="63"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.TelephonyManager#createForSubscriptionId`"
        errorLine1="            final String rawNumber = telephonyManager.createForSubscriptionId("
        errorLine2="                                                      ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java"
            line="184"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.telephony.SubscriptionInfo#getSubscriptionId`"
        errorLine1="                    subscriptionInfo.getSubscriptionId()).getLine1Number();"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java"
            line="185"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="            final TelephonyManager telephonyManager = context.getSystemService("
        errorLine2="                                                              ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java"
            line="197"
            column="63"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.telephony.TelephonyManager#createForSubscriptionId`"
        errorLine1="                final String rawNumber = telephonyManager.createForSubscriptionId("
        errorLine2="                                                          ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java"
            line="201"
            column="59"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.telephony.SubscriptionInfo#getSubscriptionId`"
        errorLine1="                        subscriptionInfo.getSubscriptionId()).getLine1Number();"
        errorLine2="                                         ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java"
            line="202"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.service.notification.Condition#newId`"
        errorLine1="        mForeverId =  Condition.newId(mContext).appendPath(&quot;forever&quot;).build();"
        errorLine2="                                ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="106"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#state`"
        errorLine1="        final boolean enabled = condition.state == Condition.STATE_TRUE;"
        errorLine2="                                ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="190"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#id`"
        errorLine1="        return condition != null ? condition.id : null;"
        errorLine2="                                   ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="254"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.service.notification.Condition#newId`"
        errorLine1="        Uri foreverId = Condition.newId(mContext).appendPath(&quot;forever&quot;).build();"
        errorLine2="                                  ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="258"
            column="35"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.service.notification.Condition`"
        errorLine1="        return new Condition(foreverId, foreverSummary(mContext), &quot;&quot;, &quot;&quot;, 0 /*icon*/,"
        errorLine2="               ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="259"
            column="16"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#id`"
        errorLine1="        return c != null &amp;&amp; ZenModeConfig.isValidCountdownToAlarmConditionId(c.id);"
        errorLine2="                                                                             ~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="270"
            column="78"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#id`"
        errorLine1="        return c != null &amp;&amp; ZenModeConfig.isValidCountdownConditionId(c.id);"
        errorLine2="                                                                      ~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="275"
            column="71"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#id`"
        errorLine1="        return c != null &amp;&amp; mForeverId.equals(c.id);"
        errorLine2="                                              ~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="279"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#line1`"
        errorLine1="        final String line1 = !TextUtils.isEmpty(condition.line1) ? condition.line1"
        errorLine2="                                                ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="341"
            column="49"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#line1`"
        errorLine1="        final String line1 = !TextUtils.isEmpty(condition.line1) ? condition.line1"
        errorLine2="                                                                   ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="341"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#summary`"
        errorLine1="                : condition.summary;"
        errorLine2="                  ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="342"
            column="19"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#line2`"
        errorLine1="        final String line2 = condition.line2;"
        errorLine2="                             ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="343"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#summary`"
        errorLine1="                plusButton.setEnabled(!Objects.equals(condition.summary, maxCondition.summary));"
        errorLine2="                                                      ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="388"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#summary`"
        errorLine1="                plusButton.setEnabled(!Objects.equals(condition.summary, maxCondition.summary));"
        errorLine2="                                                                         ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="388"
            column="74"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.NotificationManager#getNotificationPolicy`"
        errorLine1="        boolean allowAlarms = (mNotificationManager.getNotificationPolicy().priorityCategories"
        errorLine2="                                                    ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="466"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 23 (current min is 21): `android.app.NotificationManager.Policy#priorityCategories`"
        errorLine1="        boolean allowAlarms = (mNotificationManager.getNotificationPolicy().priorityCategories"
        errorLine2="                               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="466"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#id`"
        errorLine1="            final long time = ZenModeConfig.tryParseCountdownConditionId(condition.id);"
        errorLine2="                                                                         ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/EnableZenModeDialog.java"
            line="483"
            column="74"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 29 (current min is 21): `android.bluetooth.BluetoothHearingAid`"
        errorLine1="            mService = (BluetoothHearingAid) proxy;"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java"
            line="59"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `BluetoothHearingAid` to `BluetoothProfile` requires API level 29 (current min is 21)"
        errorLine1="                                                                       mService);"
        errorLine2="                                                                       ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java"
            line="257"
            column="72"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 28 (current min is 21): `android.bluetooth.BluetoothHidDevice`"
        errorLine1="            mService = (BluetoothHidDevice) proxy;"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java"
            line="63"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `BluetoothHidDevice` to `BluetoothProfile` requires API level 28 (current min is 21)"
        errorLine1="                        mService);"
        errorLine2="                        ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java"
            line="173"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.graphics.drawable.Icon#loadDrawable`"
        errorLine1="            drawable = icon.loadDrawable(mContext);"
        errorLine2="                            ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/IconCache.java"
            line="45"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getName`"
        errorLine1="        return mRouteInfo.getName().toString();"
        errorLine2="                          ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java"
            line="51"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getClientPackageName`"
        errorLine1="        return mRouteInfo.getClientPackageName() != null"
        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java"
            line="56"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getFeatures`"
        errorLine1="        final List&lt;String> features = mRouteInfo.getFeatures();"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java"
            line="93"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getId`"
        errorLine1="        if (info != null &amp;&amp; info.getSelectableRoutes().contains(device.mRouteInfo.getId())) {"
        errorLine2="                                                                                  ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="131"
            column="83"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getSelectableRoutes`"
        errorLine1="        if (info != null &amp;&amp; info.getSelectableRoutes().contains(device.mRouteInfo.getId())) {"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="131"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getId`"
        errorLine1="        if (info != null &amp;&amp; info.getSelectedRoutes().contains(device.mRouteInfo.getId())) {"
        errorLine2="                                                                                ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="162"
            column="81"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getSelectedRoutes`"
        errorLine1="        if (info != null &amp;&amp; info.getSelectedRoutes().contains(device.mRouteInfo.getId())) {"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="162"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getName`"
        errorLine1="                Log.d(TAG, route.getName() + &quot; is deselectable for &quot; + mPackageName);"
        errorLine2="                                 ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="238"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getVolumeMax`"
        errorLine1="            return info.getVolumeMax();"
        errorLine2="                        ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="320"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getVolume`"
        errorLine1="            return info.getVolume();"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="341"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getName`"
        errorLine1="            return info.getName();"
        errorLine2="                        ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="357"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getName`"
        errorLine1="                Log.d(TAG, &quot;buildAllRoutes() route : &quot; + route.getName() + &quot;, volume : &quot;"
        errorLine2="                                                               ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="378"
            column="64"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getVolume`"
        errorLine1="                        + route.getVolume() + &quot;, type : &quot; + route.getType());"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="379"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#isSystemRoute`"
        errorLine1="            if (route.isSystemRoute()) {"
        errorLine2="                      ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="381"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getName`"
        errorLine1="                Log.d(TAG, &quot;buildAvailableRoutes() route : &quot; + route.getName() + &quot;, volume : &quot;"
        errorLine2="                                                                     ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="394"
            column="70"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getVolume`"
        errorLine1="                        + route.getVolume() + &quot;, type : &quot; + route.getType());"
        errorLine2="                                ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="395"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getId`"
        errorLine1="                        &amp;&amp; getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())"
        errorLine2="                                                                                      ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="414"
            column="87"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getSelectedRoutes`"
        errorLine1="                        &amp;&amp; getRoutingSessionInfo().getSelectedRoutes().contains(route.getId())"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="414"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getName`"
        errorLine1="                Log.d(TAG, &quot;onTransferred() oldSession : &quot; + oldSession.getName()"
        errorLine2="                                                                        ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="479"
            column="73"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getName`"
        errorLine1="                        + &quot;, newSession : &quot; + newSession.getName());"
        errorLine2="                                                         ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java"
            line="480"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.Fragment#getContext`"
        errorLine1="        mImm = fragment.getContext().getSystemService(InputMethodManager.class);"
        errorLine2="                        ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java"
            line="55"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mImm = fragment.getContext().getSystemService(InputMethodManager.class);"
        errorLine2="                                     ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java"
            line="55"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `java.util.ArrayList#sort`"
        errorLine1="        subtypePreferences.sort((lhs, rhs) -> {"
        errorLine2="                           ~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java"
            line="161"
            column="28"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.Fragment#getContext`"
        errorLine1="                    mFragment, mFragment.getContext().getContentResolver(),"
        errorLine2="                                         ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java"
            line="212"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mImm = fragment.getContext().getSystemService(InputMethodManager.class);"
        errorLine2="                                     ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManagerCompat.java"
            line="56"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `java.util.ArrayList#sort`"
        errorLine1="        subtypePreferences.sort((lhs, rhs) -> {"
        errorLine2="                           ~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManagerCompat.java"
            line="162"
            column="28"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.icu.text.ListFormatter#format`"
        errorLine1="                ListFormatter.getInstance(locale).format((Object[]) subtypeNames), locale);"
        errorLine2="                                                  ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java"
            line="400"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.icu.text.ListFormatter#getInstance`"
        errorLine1="                ListFormatter.getInstance(locale).format((Object[]) subtypeNames), locale);"
        errorLine2="                              ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java"
            line="400"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.content.res.Configuration#getLocales`"
        errorLine1="        final Locale configurationLocale = configuration.getLocales().get(0);"
        errorLine2="                                                         ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java"
            line="415"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.LocaleList#get`"
        errorLine1="        final Locale configurationLocale = configuration.getLocales().get(0);"
        errorLine2="                                                                      ~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java"
            line="415"
            column="71"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.icu.text.ListFormatter#format`"
        errorLine1="                ListFormatter.getInstance(locale).format((Object[]) subtypeNames), locale);"
        errorLine2="                                                  ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilCompat.java"
            line="400"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.icu.text.ListFormatter#getInstance`"
        errorLine1="                ListFormatter.getInstance(locale).format((Object[]) subtypeNames), locale);"
        errorLine2="                              ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilCompat.java"
            line="400"
            column="31"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.content.res.Configuration#getLocales`"
        errorLine1="        final Locale configurationLocale = configuration.getLocales().get(0);"
        errorLine2="                                                         ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilCompat.java"
            line="415"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.LocaleList#get`"
        errorLine1="        final Locale configurationLocale = configuration.getLocales().get(0);"
        errorLine2="                                                                      ~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtilCompat.java"
            line="415"
            column="71"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.content.pm.ComponentInfo#directBootAware`"
        errorLine1="            if (mImi.getServiceInfo().directBootAware || isTv()) {"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java"
            line="162"
            column="17"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.content.pm.ComponentInfo#directBootAware`"
        errorLine1="            if (mImi.getServiceInfo().directBootAware || isTv()) {"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java"
            line="257"
            column="17"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mImm = context.getSystemService(InputMethodManager.class);"
        errorLine2="                       ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSettingValuesWrapper.java"
            line="61"
            column="24"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.RoutingSessionInfo#getId`"
        errorLine1="            if (TextUtils.equals(sessionId, info.getId())) {"
        errorLine2="                                                 ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java"
            line="343"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.res.Resources#getColorStateList`"
        errorLine1="                mContext.getResources().getColorStateList("
        errorLine2="                                        ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java"
            line="142"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getVolumeMax`"
        errorLine1="        return mRouteInfo.getVolumeMax();"
        errorLine2="                          ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java"
            line="211"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getVolume`"
        errorLine1="        return mRouteInfo.getVolume();"
        errorLine2="                          ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java"
            line="220"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getClientPackageName`"
        errorLine1="        return mRouteInfo.getClientPackageName();"
        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java"
            line="229"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getFeatures`"
        errorLine1="        return mRouteInfo.getFeatures();"
        errorLine2="                          ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java"
            line="361"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getId`"
        errorLine1="        return route.getId();"
        errorLine2="                     ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/MediaDeviceUtils.java"
            line="57"
            column="22"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getRxBytes`"
        errorLine1="            final long total = bucket == null ? 0L : bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                                            ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleChartDataLoader.java"
            line="48"
            column="61"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getTxBytes`"
        errorLine1="            final long total = bucket == null ? 0L : bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                                                                  ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleChartDataLoader.java"
            line="48"
            column="83"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getRxBytes`"
        errorLine1="                    usage = bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                   ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleChartDataLoader.java"
            line="86"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getTxBytes`"
        errorLine1="                    usage = bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                                         ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleChartDataLoader.java"
            line="86"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 23 (current min is 21): `android.app.usage.NetworkStatsManager`"
        errorLine1="        mNetworkStatsManager = (NetworkStatsManager)"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleDataLoader.java"
            line="62"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.app.usage.NetworkStats.Bucket`"
        errorLine1="            final NetworkStats.Bucket bucket = new NetworkStats.Bucket();"
        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleDataLoader.java"
            line="163"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats#getNextBucket`"
        errorLine1="            while (stats.hasNextBucket() &amp;&amp; stats.getNextBucket(bucket)) {"
        errorLine2="                                                  ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleDataLoader.java"
            line="164"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats#hasNextBucket`"
        errorLine1="            while (stats.hasNextBucket() &amp;&amp; stats.getNextBucket(bucket)) {"
        errorLine2="                         ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleDataLoader.java"
            line="164"
            column="26"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getRxBytes`"
        errorLine1="                bytes += bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleDataLoader.java"
            line="165"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.app.usage.NetworkStats.Bucket#getTxBytes`"
        errorLine1="                bytes += bucket.getRxBytes() + bucket.getTxBytes();"
        errorLine2="                                                      ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkCycleDataLoader.java"
            line="165"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 31 (current min is 21): `com.google.android.collect.Lists#newArrayList`"
        errorLine1="    private ArrayList&lt;NetworkPolicy> mPolicies = Lists.newArrayList();"
        errorLine2="                                                       ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java"
            line="54"
            column="56"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 23 (current min is 21): `android.app.usage.NetworkStatsManager`"
        errorLine1="        mNetworkStatsManager = (NetworkStatsManager)"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/NetworkStatsSummaryLoader.java"
            line="44"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(PermissionControllerManager.class);"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/PermissionsSummaryHelper.java"
            line="32"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.media.MediaRoute2Info#getName`"
        errorLine1="                name = mRouteInfo.getName();"
        errorLine2="                                  ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java"
            line="71"
            column="35"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.content.res.Configuration#getLocales`"
        errorLine1="        final Locale currentLocale = context.getResources().getConfiguration().getLocales().get(0);"
        errorLine2="                                                                               ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="179"
            column="80"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.LocaleList#get`"
        errorLine1="        final Locale currentLocale = context.getResources().getConfiguration().getLocales().get(0);"
        errorLine2="                                                                                            ~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="179"
            column="93"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.MeasureFormat#getInstance`"
        errorLine1="        final MeasureFormat frmt = MeasureFormat.getInstance(currentLocale, FormatWidth.SHORT);"
        errorLine2="                                                 ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="180"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.MeasureFormat.FormatWidth#SHORT`"
        errorLine1="        final MeasureFormat frmt = MeasureFormat.getInstance(currentLocale, FormatWidth.SHORT);"
        errorLine2="                                                                            ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="180"
            column="77"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.icu.util.Measure`"
        errorLine1="        final Measure daysMeasure = new Measure(2, MeasureUnit.DAY);"
        errorLine2="                                    ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="182"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TimeUnit` to `MeasureUnit` requires API level 24 (current min is 21)"
        errorLine1="        final Measure daysMeasure = new Measure(2, MeasureUnit.DAY);"
        errorLine2="                                                   ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="182"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#DAY`"
        errorLine1="        final Measure daysMeasure = new Measure(2, MeasureUnit.DAY);"
        errorLine2="                                                   ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="182"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.MeasureFormat#formatMeasures`"
        errorLine1="                        frmt.formatMeasures(daysMeasure))"
        errorLine2="                             ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="186"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.MeasureFormat#formatMeasures`"
        errorLine1="                        frmt.formatMeasures(daysMeasure),"
        errorLine2="                             ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="189"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.DateFormat#getInstanceForSkeleton`"
        errorLine1="        DateFormat fmt = DateFormat.getInstanceForSkeleton(skeleton);"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="220"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.DateFormat#format`"
        errorLine1="        return fmt.format(date);"
        errorLine2="                   ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="222"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.DateFormat#getInstanceForSkeleton`"
        errorLine1="        DateFormat fmt = DateFormat.getInstanceForSkeleton(skeleton);"
        errorLine2="                                    ~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="234"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.DateFormat#format`"
        errorLine1="        CharSequence timeString = fmt.format(date);"
        errorLine2="                                      ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java"
            line="236"
            column="39"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final ArraySet&lt;String> mWhitelistedApps = new ArraySet&lt;>();"
        errorLine2="                                                      ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java"
            line="49"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final ArraySet&lt;String> mSysWhitelistedApps = new ArraySet&lt;>();"
        errorLine2="                                                         ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java"
            line="50"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final ArraySet&lt;String> mSysWhitelistedAppsExceptIdle = new ArraySet&lt;>();"
        errorLine2="                                                                   ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java"
            line="51"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final ArraySet&lt;String> mDefaultActiveApps = new ArraySet&lt;>();"
        errorLine2="                                                        ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java"
            line="52"
            column="57"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final DevicePolicyManager devicePolicyManager = mAppContext.getSystemService("
        errorLine2="                                                                    ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java"
            line="98"
            column="69"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final StorageStatsManager stats = context.getSystemService(StorageStatsManager.class);"
        errorLine2="                                                  ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java"
            line="43"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager`"
        errorLine1="        final StorageStatsManager stats = context.getSystemService(StorageStatsManager.class);"
        errorLine2="                                                                   ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java"
            line="43"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final StorageStatsManager stats = context.getSystemService(StorageStatsManager.class);"
        errorLine2="                                                  ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java"
            line="62"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager`"
        errorLine1="        final StorageStatsManager stats = context.getSystemService(StorageStatsManager.class);"
        errorLine2="                                                                   ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/PrivateStorageInfo.java"
            line="62"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.UserHandle#getUserHandleForUid`"
        errorLine1="            UserHandle user = UserHandle.getUserHandleForUid(uid);"
        errorLine2="                                         ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationAccesses.java"
            line="102"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.UserHandle#getUserHandleForUid`"
        errorLine1="            final UserHandle user = UserHandle.getUserHandleForUid(uid);"
        errorLine2="                                               ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java"
            line="97"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getColor`"
        errorLine1="            final int disabledColor = context.getColor(R.color.disabled_text_color);"
        errorLine2="                                              ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtilsInternal.java"
            line="581"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="        private Set&lt;Setting> mSettingsBeingLoaded = new ArraySet&lt;Setting>();"
        errorLine2="                                                    ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/location/SettingsInjector.java"
            line="361"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 23 (current min is 21): `android.graphics.drawable.DrawableWrapper`"
        errorLine1="public class SignalDrawable extends DrawableWrapper {"
        errorLine2="                                    ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java"
            line="45"
            column="37"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.graphics.drawable.DrawableWrapper`"
        errorLine1="        super(context.getDrawable(com.android.internal.R.drawable.ic_signal_cellular));"
        errorLine2="        ~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java"
            line="87"
            column="9"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.content.res.Resources#getFloat`"
        errorLine1="        mCutoutWidthFraction = context.getResources().getFloat("
        errorLine2="                                                      ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java"
            line="92"
            column="55"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.content.res.Resources#getFloat`"
        errorLine1="        mCutoutHeightFraction = context.getResources().getFloat("
        errorLine2="                                                       ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java"
            line="94"
            column="56"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getColor`"
        errorLine1="        mTransparentPaint.setColor(context.getColor(android.R.color.transparent));"
        errorLine2="                                           ~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java"
            line="101"
            column="44"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.graphics.drawable.Drawable#getLayoutDirection`"
        errorLine1="        boolean isRtl = getLayoutDirection() == LayoutDirection.RTL;"
        errorLine2="                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java"
            line="190"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(CarrierConfigManager.class);"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/SignalStrengthUtil.java"
            line="33"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 23 (current min is 21): `android.telephony.CarrierConfigManager`"
        errorLine1="                context.getSystemService(CarrierConfigManager.class);"
        errorLine2="                                         ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/SignalStrengthUtil.java"
            line="33"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.telephony.CarrierConfigManager#getConfigForSubId`"
        errorLine1="            bundle = carrierConfigMgr.getConfigForSubId(subscriptionId);"
        errorLine2="                                      ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/SignalStrengthUtil.java"
            line="36"
            column="39"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.os.BaseBundle#getBoolean`"
        errorLine1="        return (bundle != null &amp;&amp; bundle.getBoolean("
        errorLine2="                                         ~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/SignalStrengthUtil.java"
            line="38"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private static final Set&lt;Uri> sRegisteredUris = new ArraySet&lt;>();"
        errorLine2="                                                    ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/SliceBroadcastRelay.java"
            line="47"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mUser = mContext.getSystemService(UserManager.class);"
        errorLine2="                         ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="107"
            column="26"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mStats = mContext.getSystemService(StorageStatsManager.class);"
        errorLine2="                          ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="108"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager`"
        errorLine1="        mStats = mContext.getSystemService(StorageStatsManager.class);"
        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="108"
            column="44"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getTotalBytes`"
        errorLine1="                addValue(details.usersSize, user.id, stats.getTotalBytes());"
        errorLine2="                                                           ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="188"
            column="60"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getAudioBytes`"
        errorLine1="                mediaMap.put(Environment.DIRECTORY_MUSIC, stats.getAudioBytes());"
        errorLine2="                                                                ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="191"
            column="65"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getVideoBytes`"
        errorLine1="                mediaMap.put(Environment.DIRECTORY_MOVIES, stats.getVideoBytes());"
        errorLine2="                                                                 ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="192"
            column="66"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getImageBytes`"
        errorLine1="                mediaMap.put(Environment.DIRECTORY_PICTURES, stats.getImageBytes());"
        errorLine2="                                                                   ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="193"
            column="68"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getAudioBytes`"
        errorLine1="                final long miscBytes = stats.getTotalBytes() - stats.getAudioBytes()"
        errorLine2="                                                                     ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="195"
            column="70"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getTotalBytes`"
        errorLine1="                final long miscBytes = stats.getTotalBytes() - stats.getAudioBytes()"
        errorLine2="                                             ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="195"
            column="46"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getImageBytes`"
        errorLine1="                        - stats.getVideoBytes() - stats.getImageBytes();"
        errorLine2="                                                        ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="196"
            column="57"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getVideoBytes`"
        errorLine1="                        - stats.getVideoBytes() - stats.getImageBytes();"
        errorLine2="                                ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="196"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getDataBytes`"
        errorLine1="                addValue(details.usersSize, user.id, stats.getDataBytes());"
        errorLine2="                                                           ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="219"
            column="60"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getDataBytes`"
        errorLine1="                addValue(details.appsSize, user.id, stats.getCodeBytes() + stats.getDataBytes());"
        errorLine2="                                                                                 ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="220"
            column="82"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getCacheBytes`"
        errorLine1="                details.cacheSize += stats.getCacheBytes();"
        errorLine2="                                           ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/deviceinfo/StorageMeasurement.java"
            line="222"
            column="44"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        mStorageStatsManager = context.getSystemService(StorageStatsManager.class);"
        errorLine2="                                       ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="36"
            column="40"/>
    </issue>

    <issue
        id="NewApi"
        message="Class requires API level 26 (current min is 21): `android.app.usage.StorageStatsManager`"
        errorLine1="        mStorageStatsManager = context.getSystemService(StorageStatsManager.class);"
        errorLine2="                                                        ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="36"
            column="57"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getTotalBytes`"
        errorLine1="            totalBytes = stats.getTotalBytes();"
        errorLine2="                               ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="90"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getAudioBytes`"
        errorLine1="            audioBytes = stats.getAudioBytes();"
        errorLine2="                               ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="91"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getVideoBytes`"
        errorLine1="            videoBytes = stats.getVideoBytes();"
        errorLine2="                               ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="92"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getImageBytes`"
        errorLine1="            imageBytes = stats.getImageBytes();"
        errorLine2="                               ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="93"
            column="32"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.ExternalStorageStats#getAppBytes`"
        errorLine1="            appBytes = stats.getAppBytes();"
        errorLine2="                             ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="94"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getDataBytes`"
        errorLine1="            return mStats.getDataBytes();"
        errorLine2="                          ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="127"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getCacheBytes`"
        errorLine1="            return mStats.getCacheBytes();"
        errorLine2="                          ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="131"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getAppBytes`"
        errorLine1="            return mStats.getAppBytes() + mStats.getDataBytes();"
        errorLine2="                          ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="135"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.app.usage.StorageStats#getDataBytes`"
        errorLine1="            return mStats.getAppBytes() + mStats.getDataBytes();"
        errorLine2="                                                 ~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java"
            line="135"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.icu.util.Measure`"
        errorLine1="            measureList.add(new Measure(days, MeasureUnit.DAY));"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="77"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TimeUnit` to `MeasureUnit` requires API level 24 (current min is 21)"
        errorLine1="            measureList.add(new Measure(days, MeasureUnit.DAY));"
        errorLine2="                                              ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="77"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#DAY`"
        errorLine1="            measureList.add(new Measure(days, MeasureUnit.DAY));"
        errorLine2="                                              ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="77"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.icu.util.Measure`"
        errorLine1="            measureList.add(new Measure(hours, MeasureUnit.HOUR));"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="80"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TimeUnit` to `MeasureUnit` requires API level 24 (current min is 21)"
        errorLine1="            measureList.add(new Measure(hours, MeasureUnit.HOUR));"
        errorLine2="                                               ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="80"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#HOUR`"
        errorLine1="            measureList.add(new Measure(hours, MeasureUnit.HOUR));"
        errorLine2="                                               ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="80"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.icu.util.Measure`"
        errorLine1="            measureList.add(new Measure(minutes, MeasureUnit.MINUTE));"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="83"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TimeUnit` to `MeasureUnit` requires API level 24 (current min is 21)"
        errorLine1="            measureList.add(new Measure(minutes, MeasureUnit.MINUTE));"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="83"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#MINUTE`"
        errorLine1="            measureList.add(new Measure(minutes, MeasureUnit.MINUTE));"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="83"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.icu.util.Measure`"
        errorLine1="            measureList.add(new Measure(seconds, MeasureUnit.SECOND));"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="86"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TimeUnit` to `MeasureUnit` requires API level 24 (current min is 21)"
        errorLine1="            measureList.add(new Measure(seconds, MeasureUnit.SECOND));"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="86"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#SECOND`"
        errorLine1="            measureList.add(new Measure(seconds, MeasureUnit.SECOND));"
        errorLine2="                                                 ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="86"
            column="50"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `new android.icu.util.Measure`"
        errorLine1="            measureList.add(new Measure(0, withSeconds ? MeasureUnit.SECOND : MeasureUnit.MINUTE));"
        errorLine2="                            ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="90"
            column="29"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TimeUnit` to `MeasureUnit` requires API level 24 (current min is 21)"
        errorLine1="            measureList.add(new Measure(0, withSeconds ? MeasureUnit.SECOND : MeasureUnit.MINUTE));"
        errorLine2="                                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="90"
            column="44"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#MINUTE`"
        errorLine1="            measureList.add(new Measure(0, withSeconds ? MeasureUnit.SECOND : MeasureUnit.MINUTE));"
        errorLine2="                                                                              ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="90"
            column="79"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#SECOND`"
        errorLine1="            measureList.add(new Measure(0, withSeconds ? MeasureUnit.SECOND : MeasureUnit.MINUTE));"
        errorLine2="                                                         ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="90"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.MeasureFormat#getInstance`"
        errorLine1="        final MeasureFormat measureFormat = MeasureFormat.getInstance("
        errorLine2="                                                          ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="95"
            column="59"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.MeasureFormat.FormatWidth#SHORT`"
        errorLine1="                locale, FormatWidth.SHORT);"
        errorLine2="                        ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="96"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.MeasureFormat#formatMeasures`"
        errorLine1="        sb.append(measureFormat.formatMeasures(measureArray));"
        errorLine2="                                ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="97"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.util.Measure#getUnit`"
        errorLine1="        if (measureArray.length == 1 &amp;&amp; MeasureUnit.MINUTE.equals(measureArray[0].getUnit())) {"
        errorLine2="                                                                                  ~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="99"
            column="83"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.util.MeasureUnit#MINUTE`"
        errorLine1="        if (measureArray.length == 1 &amp;&amp; MeasureUnit.MINUTE.equals(measureArray[0].getUnit())) {"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="99"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter.RelativeUnit#MINUTES`"
        errorLine1="            unit = RelativeUnit.MINUTES;"
        errorLine2="                   ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="132"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter.RelativeUnit#HOURS`"
        errorLine1="            unit = RelativeUnit.HOURS;"
        errorLine2="                   ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="136"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter.RelativeUnit#DAYS`"
        errorLine1="            unit = RelativeUnit.DAYS;"
        errorLine2="                   ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="140"
            column="20"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter#getInstance`"
        errorLine1="        final RelativeDateTimeFormatter formatter = RelativeDateTimeFormatter.getInstance("
        errorLine2="                                                                              ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="146"
            column="79"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.util.ULocale#forLocale`"
        errorLine1="                ULocale.forLocale(locale),"
        errorLine2="                        ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="147"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.DisplayContext#CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE`"
        errorLine1="                android.icu.text.DisplayContext.CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE);"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="150"
            column="17"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter#format`"
        errorLine1="        return formatter.format(value, RelativeDateTimeFormatter.Direction.LAST, unit);"
        errorLine2="                         ~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="152"
            column="26"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter.Direction#LAST`"
        errorLine1="        return formatter.format(value, RelativeDateTimeFormatter.Direction.LAST, unit);"
        errorLine2="                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="152"
            column="40"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.RelativeDateTimeFormatter.Style#LONG`"
        errorLine1="                RelativeDateTimeFormatter.Style.LONG);"
        errorLine2="                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/utils/StringUtil.java"
            line="174"
            column="17"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.content.Context#bindServiceAsUser`"
        errorLine1="        mContext.bindServiceAsUser(mServiceIntent, mServiceConnection, Context.BIND_AUTO_CREATE,"
        errorLine2="                 ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionController.java"
            line="83"
            column="18"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `new android.net.NetworkInfo`"
        errorLine1="            mNetworkInfo = new NetworkInfo("
        errorLine2="                           ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java"
            line="110"
            column="28"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        WifiManager wifiManager = mContext.getSystemService(WifiManager.class);"
        errorLine2="                                           ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java"
            line="130"
            column="44"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiManager#getMaxSignalLevel`"
        errorLine1="        int maxSignalLevel = wifiManager.getMaxSignalLevel();"
        errorLine2="                                         ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java"
            line="131"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);"
        errorLine2="                                               ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java"
            line="26"
            column="48"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.graphics.Paint#setBlendMode`"
        errorLine1="        p.blendMode = BlendMode.SRC"
        errorLine2="          ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="115"
            column="11"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 29 (current min is 21): `android.graphics.BlendMode#SRC`"
        errorLine1="        p.blendMode = BlendMode.SRC"
        errorLine2="                      ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="115"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 29 (current min is 21): `android.graphics.BlendMode#SRC`"
        errorLine1="        p.blendMode = BlendMode.SRC"
        errorLine2="                      ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="115"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.graphics.Paint#setBlendMode`"
        errorLine1="        p.blendMode = BlendMode.CLEAR"
        errorLine2="          ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="124"
            column="11"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 29 (current min is 21): `android.graphics.BlendMode#CLEAR`"
        errorLine1="        p.blendMode = BlendMode.CLEAR"
        errorLine2="                      ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="124"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 29 (current min is 21): `android.graphics.BlendMode#CLEAR`"
        errorLine1="        p.blendMode = BlendMode.CLEAR"
        errorLine2="                      ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="124"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.graphics.Paint#setBlendMode`"
        errorLine1="        p.blendMode = BlendMode.SRC"
        errorLine2="          ~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="143"
            column="11"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 29 (current min is 21): `android.graphics.BlendMode#SRC`"
        errorLine1="        p.blendMode = BlendMode.SRC"
        errorLine2="                      ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="143"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 29 (current min is 21): `android.graphics.BlendMode#SRC`"
        errorLine1="        p.blendMode = BlendMode.SRC"
        errorLine2="                      ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="143"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.graphics.Canvas#clipOutPath`"
        errorLine1="            c.clipOutPath(scaledBolt)"
        errorLine2="              ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/graph/ThemedBatteryDrawable.kt"
            line="240"
            column="15"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.UserManager#supportsMultipleUsers`"
        errorLine1="                detail.label = res.getString(UserManager.supportsMultipleUsers()"
        errorLine2="                                                         ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java"
            line="120"
            column="58"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                final TetheringManager tm = mContext.getSystemService(TetheringManager.class);"
        errorLine2="                                                     ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java"
            line="126"
            column="54"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="            boolean isManaged = context.getSystemService(DevicePolicyManager.class)"
        errorLine2="                                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/drawable/UserIconDrawable.java"
            line="176"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.telephony.TelephonyManager#isVoiceCapable`"
        errorLine1="        return telephony != null &amp;&amp; telephony.isVoiceCapable();"
        errorLine2="                                              ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/volume/Util.java"
            line="185"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        LocationManager locationManager = context.getSystemService(LocationManager.class);"
        errorLine2="                                                  ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="82"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.res.Resources#getColorStateList`"
        errorLine1="                context.getResources().getColorStateList(resId, context.getTheme());"
        errorLine2="                                       ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="246"
            column="40"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        return !context.getSystemService(TelephonyManager.class).isDataCapable();"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="438"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 31 (current min is 21): `android.telephony.TelephonyManager#isDataCapable`"
        errorLine1="        return !context.getSystemService(TelephonyManager.class).isDataCapable();"
        errorLine2="                                                                 ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="438"
            column="66"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="        final AudioManager audioManager = context.getSystemService(AudioManager.class);"
        errorLine2="                                                  ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="459"
            column="51"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.content.pm.PackageItemInfo#loadUnbadgedIcon`"
        errorLine1="        return getBadgedIcon(context, appInfo.loadUnbadgedIcon(context.getPackageManager()),"
        errorLine2="                                              ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="527"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.os.UserHandle#getUserHandleForUid`"
        errorLine1="                UserHandle.getUserHandleForUid(appInfo.uid));"
        errorLine2="                           ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/Utils.java"
            line="528"
            column="28"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.net.wifi.WifiConfiguration#isPasspoint`"
        errorLine1="            if (network.isPasspoint()) {"
        errorLine2="                        ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiSavedConfigUtils.java"
            line="46"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.wifi.WifiManager#getPasspointConfigurations`"
        errorLine1="                    wifiManager.getPasspointConfigurations();"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiSavedConfigUtils.java"
            line="57"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.NetworkRequest.Builder#clearCapabilities`"
        errorLine1="            .clearCapabilities()"
        errorLine2="             ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="60"
            column="14"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.NetworkCapabilities#getTransportInfo`"
        errorLine1="            WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();"
        errorLine2="                                                               ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="69"
            column="64"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `TransportInfo` to `WifiInfo` requires API level 29 (current min is 21)"
        errorLine1="            WifiInfo wifiInfo = (WifiInfo) networkCapabilities.getTransportInfo();"
        errorLine2="                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="69"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.ConnectivityManager#registerNetworkCallback`"
        errorLine1="            mConnectivityManager.registerNetworkCallback("
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="134"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.ConnectivityManager#registerDefaultNetworkCallback`"
        errorLine1="            mConnectivityManager.registerDefaultNetworkCallback(mDefaultNetworkCallback, mHandler);"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="136"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiInfo#getPasspointProviderFriendlyName`"
        errorLine1="                    ssid = mWifiInfo.getPasspointProviderFriendlyName();"
        errorLine2="                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="164"
            column="38"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiInfo#getPasspointProviderFriendlyName`"
        errorLine1="                ssid = mWifiInfo.getPasspointProviderFriendlyName();"
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="192"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiManager#calculateSignalLevel`"
        errorLine1="        level = mWifiManager.calculateSignalLevel(rssi);"
        errorLine2="                             ~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java"
            line="208"
            column="30"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="    private final Set&lt;NetworkKey> mRequestedScores = new ArraySet&lt;>();"
        errorLine2="                                                     ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="147"
            column="54"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(WifiManager.class),"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="208"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(ConnectivityManager.class),"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="209"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(NetworkScoreManager.class),"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="210"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(WifiManager.class),"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="219"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(ConnectivityManager.class),"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="220"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `android.content.Context#getSystemService`"
        errorLine1="                context.getSystemService(NetworkScoreManager.class),"
        errorLine2="                        ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="221"
            column="25"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.NetworkRequest.Builder#clearCapabilities`"
        errorLine1="                .clearCapabilities()"
        errorLine2="                 ~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="243"
            column="18"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 26 (current min is 21): `android.net.ConnectivityManager#registerNetworkCallback`"
        errorLine1="            mConnectivityManager.registerNetworkCallback("
        errorLine2="                                 ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="348"
            column="34"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 23 (current min is 21): `new android.util.ArraySet`"
        errorLine1="        Set&lt;String> seenFQDNs = new ArraySet&lt;>();"
        errorLine2="                                ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="688"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Cast from `ArraySet` to `Set` requires API level 23 (current min is 21)"
        errorLine1="        Set&lt;String> seenFQDNs = new ArraySet&lt;>();"
        errorLine2="                                ~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="688"
            column="33"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isEnhancedOpenSupported`"
        errorLine1="        final boolean isOweSupported = mWifiManager.isEnhancedOpenSupported();"
        errorLine2="                                                    ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="1116"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isWpa3SaeSupported`"
        errorLine1="        final boolean isSaeSupported = mWifiManager.isWpa3SaeSupported();"
        errorLine2="                                                    ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="1117"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 29 (current min is 21): `android.net.wifi.WifiManager#isWpa3SuiteBSupported`"
        errorLine1="        final boolean isSuiteBSupported = mWifiManager.isWpa3SuiteBSupported();"
        errorLine2="                                                       ~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java"
            line="1118"
            column="56"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level R (current min is 21): `android.net.wifi.WifiInfo#getWifiStandard`"
        errorLine1="            visibility.append(&quot; standard = &quot;).append(info.getWifiStandard());"
        errorLine2="                                                          ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java"
            line="103"
            column="59"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.service.notification.Condition#line1`"
        errorLine1="                radioContentText = condition.line1;"
        errorLine2="                                   ~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java"
            line="285"
            column="36"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.view.View#setAccessibilityTraversalAfter`"
        errorLine1="                radio.setAccessibilityTraversalAfter(lastView.getId());"
        errorLine2="                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/ZenRadioLayout.java"
            line="54"
            column="23"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 22 (current min is 21): `android.view.View#setAccessibilityTraversalAfter`"
        errorLine1="            if (contentClick != null) contentClick.setAccessibilityTraversalAfter(radio.getId());"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/notification/ZenRadioLayout.java"
            line="57"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat#getInstance`"
        errorLine1="        TimeZoneFormat tzFormatter = TimeZoneFormat.getInstance(locale);"
        errorLine2="                                                    ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="99"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneNames#getInstance`"
        errorLine1="        TimeZoneNames timeZoneNames = TimeZoneNames.getInstance(locale);"
        errorLine2="                                                    ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="101"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneNames#getInstance`"
        errorLine1="        final TimeZoneNames timeZoneNames = TimeZoneNames.getInstance(locale);"
        errorLine2="                                                          ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="114"
            column="59"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.util.TimeZone#getCanonicalID`"
        errorLine1="            String canonicalZoneId = android.icu.util.TimeZone.getCanonicalID(tz.getID());"
        errorLine2="                                                               ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="222"
            column="64"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneNames#getExemplarLocationName`"
        errorLine1="            displayName = timeZoneNames.getExemplarLocationName(canonicalZoneId);"
        errorLine2="                                        ~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="226"
            column="41"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.TimeZoneNames.NameType#LONG_DAYLIGHT`"
        errorLine1="                tz.inDaylightTime(now) ? TimeZoneNames.NameType.LONG_DAYLIGHT"
        errorLine2="                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="242"
            column="42"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.TimeZoneNames.NameType#LONG_STANDARD`"
        errorLine1="                        : TimeZoneNames.NameType.LONG_STANDARD;"
        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="243"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneNames#getDisplayName`"
        errorLine1="        return names.getDisplayName(getCanonicalZoneId(tz), nameType, now.getTime());"
        errorLine2="                     ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="244"
            column="22"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.util.TimeZone#getCanonicalID`"
        errorLine1="        final String canonicalId = android.icu.util.TimeZone.getCanonicalID(id);"
        errorLine2="                                                             ~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="249"
            column="62"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat#getGMTPattern`"
        errorLine1="        final String gmtPattern = tzFormatter.getGMTPattern();"
        errorLine2="                                              ~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="290"
            column="47"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat.GMTOffsetPatternType#NEGATIVE_HM`"
        errorLine1="            patternType = TimeZoneFormat.GMTOffsetPatternType.NEGATIVE_HM;"
        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="312"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Field requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat.GMTOffsetPatternType#POSITIVE_HM`"
        errorLine1="            patternType = TimeZoneFormat.GMTOffsetPatternType.POSITIVE_HM;"
        errorLine2="                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="314"
            column="27"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat#getGMTOffsetPattern`"
        errorLine1="        final String gmtOffsetPattern = tzFormatter.getGMTOffsetPattern(patternType);"
        errorLine2="                                                    ~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="316"
            column="53"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat#getGMTOffsetDigits`"
        errorLine1="        final String localizedDigits = tzFormatter.getGMTOffsetDigits();"
        errorLine2="                                                   ~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="317"
            column="52"/>
    </issue>

    <issue
        id="NewApi"
        message="Call requires API level 24 (current min is 21): `android.icu.text.TimeZoneFormat#getInstance`"
        errorLine1="            final TimeZoneFormat tzFormatter = TimeZoneFormat.getInstance(locale);"
        errorLine2="                                                              ~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java"
            line="377"
            column="63"/>
    </issue>

    <issue
        id="NewApi"
        message="`?android:attr/colorError` requires API level 26 (current min is 21)"
        errorLine1="    &lt;item android:color=&quot;?android:attr/colorError&quot; />"
        errorLine2="          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/res/color/batterymeter_plus_color.xml"
            line="17"
            column="11"/>
    </issue>

    <issue
        id="NewApi"
        message="`@android:id/switch_widget` requires API level 24 (current min is 21)"
        errorLine1="        android:id=&quot;@android:id/switch_widget&quot;"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/res/layout/restricted_switch_widget.xml"
            line="26"
            column="9"/>
    </issue>

    <issue
        id="NewApi"
        message="`?android:attr/dialogPreferredPadding` requires API level 22 (current min is 21)"
        errorLine1="        android:paddingStart=&quot;?android:attr/dialogPreferredPadding&quot;"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/res/layout/settings_dialog_title.xml"
            line="30"
            column="9"/>
    </issue>

    <issue
        id="NewApi"
        message="`?android:attr/dialogPreferredPadding` requires API level 22 (current min is 21)"
        errorLine1="        android:paddingEnd=&quot;?android:attr/dialogPreferredPadding&quot;"
        errorLine2="        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/res/layout/settings_dialog_title.xml"
            line="31"
            column="9"/>
    </issue>

    <issue
        id="NewApi"
        message="`?android:attr/colorError` requires API level 26 (current min is 21)"
        errorLine1="            android:textColor=&quot;?android:attr/colorError&quot;/>"
        errorLine2="            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
        <location
            file="frameworks/base/packages/SettingsLib/res/layout/zen_mode_turn_on_dialog_container.xml"
            line="58"
            column="13"/>
    </issue>

</issues>
