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
|
@Override
|
||||||
public boolean onPreferenceTreeClick(Preference preference) {
|
public boolean onPreferenceTreeClick(Preference preference) {
|
||||||
if (preference != mSelectedPreference) {
|
if (preference == mSelectedPreference) {
|
||||||
stopNetworkQuery();
|
Log.d(TAG, "onPreferenceTreeClick: preference is mSelectedPreference. Do nothing.");
|
||||||
|
return true;
|
||||||
// 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 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;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -563,8 +570,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
int idxPreference = mPreferenceCategory.getPreferenceCount();
|
int idxPreference = mPreferenceCategory.getPreferenceCount();
|
||||||
while (idxPreference > 0) {
|
while (idxPreference > 0) {
|
||||||
idxPreference--;
|
idxPreference--;
|
||||||
final NetworkOperatorPreference networkOperator = (NetworkOperatorPreference)
|
final Preference networkOperator = mPreferenceCategory.getPreference(idxPreference);
|
||||||
(mPreferenceCategory.getPreference(idxPreference));
|
|
||||||
networkOperator.setSummary(null);
|
networkOperator.setSummary(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,6 @@ import android.content.Context;
|
|||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.PersistableBundle;
|
import android.os.PersistableBundle;
|
||||||
import android.provider.Settings;
|
|
||||||
import android.telephony.CarrierConfigManager;
|
import android.telephony.CarrierConfigManager;
|
||||||
import android.telephony.CellIdentity;
|
import android.telephony.CellIdentity;
|
||||||
import android.telephony.CellIdentityGsm;
|
import android.telephony.CellIdentityGsm;
|
||||||
@@ -37,6 +36,7 @@ import android.telephony.CellSignalStrengthGsm;
|
|||||||
import android.telephony.CellSignalStrengthLte;
|
import android.telephony.CellSignalStrengthLte;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceCategory;
|
import androidx.preference.PreferenceCategory;
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -310,4 +310,13 @@ public class NetworkSelectSettingsTest {
|
|||||||
cellInfoGsm.setCellSignalStrength(cssg);
|
cellInfoGsm.setCellSignalStrength(cssg);
|
||||||
return cellInfoGsm;
|
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