Show WiFi minimum level when the Wi-Fi level is UNREACHABLE

- Use WIFI_LEVEL_MIN instead of WIFI_LEVEL_UNREACHABLE to get the Wi-Fi icon resource to avoid app crashing because no valid Wi-Fi icon could be found.

Bug: 213294802
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=AddAppNetworksFragmentTest

Change-Id: Ia805e902716c25db3276b96116a84d0dd2d96a1b
This commit is contained in:
Weng Su
2022-09-26 20:54:19 +08:00
parent b5273ac080
commit 673f06c2ec
2 changed files with 13 additions and 6 deletions

View File

@@ -60,6 +60,7 @@ import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.wifi.WifiUtils;
import com.android.wifitrackerlib.WifiEntry;
import com.android.wifitrackerlib.WifiPickerTracker;
@@ -419,8 +420,7 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
return;
}
// TODO: Check level of the network to show signal icon.
final Drawable wifiIcon = mActivity.getDrawable(
Utils.getWifiIconResource(level)).mutate();
final Drawable wifiIcon = mActivity.getDrawable(getWifiIconResource(level)).mutate();
final Drawable wifiIconDark = wifiIcon.getConstantState().newDrawable().mutate();
wifiIconDark.setTintList(
Utils.getColorAttr(mActivity, android.R.attr.colorControlNormal));
@@ -566,8 +566,7 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
final PreferenceImageView imageView = view.findViewById(android.R.id.icon);
if (imageView != null) {
final Drawable drawable = getContext().getDrawable(
com.android.settingslib.Utils.getWifiIconResource(
uiConfigurationItem.mLevel));
getWifiIconResource(uiConfigurationItem.mLevel));
drawable.setTintList(
com.android.settingslib.Utils.getColorAttr(getContext(),
android.R.attr.colorControlNormal));
@@ -755,8 +754,6 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
}
}
@VisibleForTesting
void updateScanResultsToUi() {
if (mUiToRequestedList == null) {
@@ -825,4 +822,9 @@ public class AddAppNetworksFragment extends InstrumentedFragment implements
public void onNumSavedNetworksChanged() {
// Do nothing.
}
@VisibleForTesting
static int getWifiIconResource(int level) {
return WifiUtils.getInternetIconResource(level, false /* noInternet */);
}
}

View File

@@ -485,6 +485,11 @@ public class AddAppNetworksFragmentTest {
assertThat(item.mDisplayedSsid).isEqualTo(FAKE_NEW_WPA_SSID);
}
@Test
public void getWifiIconResource_wifiLevelIsUnreachable_shouldNotCrash() {
AddAppNetworksFragment.getWifiIconResource(WifiEntry.WIFI_LEVEL_UNREACHABLE);
}
private void setUpOneScannedNetworkWithScanedLevel4() {
final ArrayList list = new ArrayList<>();
list.add(mWifiEntry);