Merge "Fix ClassCastException at NetworkSelectSettings" into udc-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
32c75f49a7
@@ -236,37 +236,44 @@ public class NetworkSelectSettings extends DashboardFragment {
|
||||
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(Preference preference) {
|
||||
if (preference != mSelectedPreference) {
|
||||
stopNetworkQuery();
|
||||
|
||||
// Refresh the last selected item in case users reselect network.
|
||||
clearPreferenceSummary();
|
||||
if (mSelectedPreference != null) {
|
||||
// Set summary as "Disconnected" to the previously connected network
|
||||
mSelectedPreference.setSummary(R.string.network_disconnected);
|
||||
}
|
||||
|
||||
mSelectedPreference = (NetworkOperatorPreference) preference;
|
||||
mSelectedPreference.setSummary(R.string.network_connecting);
|
||||
|
||||
mMetricsFeatureProvider.action(getContext(),
|
||||
SettingsEnums.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
|
||||
|
||||
setProgressBarVisible(true);
|
||||
// Disable the screen until network is manually set
|
||||
enablePreferenceScreen(false);
|
||||
|
||||
mRequestIdManualNetworkSelect = getNewRequestId();
|
||||
mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
|
||||
final OperatorInfo operator = mSelectedPreference.getOperatorInfo();
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
final Message msg = mHandler.obtainMessage(
|
||||
EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
|
||||
msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
|
||||
operator, true /* persistSelection */);
|
||||
msg.sendToTarget();
|
||||
});
|
||||
if (preference == mSelectedPreference) {
|
||||
Log.d(TAG, "onPreferenceTreeClick: preference is mSelectedPreference. Do nothing.");
|
||||
return true;
|
||||
}
|
||||
if (!(preference instanceof NetworkOperatorPreference)) {
|
||||
Log.d(TAG, "onPreferenceTreeClick: preference is not the NetworkOperatorPreference.");
|
||||
return false;
|
||||
}
|
||||
|
||||
stopNetworkQuery();
|
||||
|
||||
// Refresh the last selected item in case users reselect network.
|
||||
clearPreferenceSummary();
|
||||
if (mSelectedPreference != null) {
|
||||
// Set summary as "Disconnected" to the previously connected network
|
||||
mSelectedPreference.setSummary(R.string.network_disconnected);
|
||||
}
|
||||
|
||||
mSelectedPreference = (NetworkOperatorPreference) preference;
|
||||
mSelectedPreference.setSummary(R.string.network_connecting);
|
||||
|
||||
mMetricsFeatureProvider.action(getContext(),
|
||||
SettingsEnums.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
|
||||
|
||||
setProgressBarVisible(true);
|
||||
// Disable the screen until network is manually set
|
||||
enablePreferenceScreen(false);
|
||||
|
||||
mRequestIdManualNetworkSelect = getNewRequestId();
|
||||
mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
|
||||
final OperatorInfo operator = mSelectedPreference.getOperatorInfo();
|
||||
ThreadUtils.postOnBackgroundThread(() -> {
|
||||
final Message msg = mHandler.obtainMessage(
|
||||
EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
|
||||
msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
|
||||
operator, true /* persistSelection */);
|
||||
msg.sendToTarget();
|
||||
});
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -563,8 +570,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
||||
int idxPreference = mPreferenceCategory.getPreferenceCount();
|
||||
while (idxPreference > 0) {
|
||||
idxPreference--;
|
||||
final NetworkOperatorPreference networkOperator = (NetworkOperatorPreference)
|
||||
(mPreferenceCategory.getPreference(idxPreference));
|
||||
final Preference networkOperator = mPreferenceCategory.getPreference(idxPreference);
|
||||
networkOperator.setSummary(null);
|
||||
}
|
||||
}
|
||||
|
@@ -25,7 +25,6 @@ import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.os.PersistableBundle;
|
||||
import android.provider.Settings;
|
||||
import android.telephony.CarrierConfigManager;
|
||||
import android.telephony.CellIdentity;
|
||||
import android.telephony.CellIdentityGsm;
|
||||
@@ -37,6 +36,7 @@ import android.telephony.CellSignalStrengthGsm;
|
||||
import android.telephony.CellSignalStrengthLte;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceManager;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
@@ -310,4 +310,13 @@ public class NetworkSelectSettingsTest {
|
||||
cellInfoGsm.setCellSignalStrength(cssg);
|
||||
return cellInfoGsm;
|
||||
}
|
||||
|
||||
@Test
|
||||
@UiThreadTest
|
||||
public void onPreferenceTreeClick_notNetworkOperatorPreference_noCrash() {
|
||||
mNetworkSelectSettings.onCreateInitialization();
|
||||
mNetworkSelectSettings.enablePreferenceScreen(true);
|
||||
|
||||
mNetworkSelectSettings.onPreferenceTreeClick(new Preference(mContext));
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user