[Settings] Replacing accessing of PhoneConstants$DataState

Replaced by PhoneStateListner#onPreciseDataConnectionStateChanged().

Bug: 147080692
Test: manual
Change-Id: I0a00bac335a62079913a95bf5ab6cdb9fbcd069d
This commit is contained in:
Bonian Chen
2020-01-02 22:01:41 +08:00
parent 6b7b92ced5
commit 3446cfebfa

View File

@@ -38,6 +38,8 @@ import android.os.UserHandle;
import android.os.UserManager; import android.os.UserManager;
import android.provider.Telephony; import android.provider.Telephony;
import android.telephony.CarrierConfigManager; import android.telephony.CarrierConfigManager;
import android.telephony.PhoneStateListener;
import android.telephony.PreciseDataConnectionState;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
@@ -52,8 +54,6 @@ import android.widget.Toast;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceGroup;
import com.android.internal.telephony.PhoneConstants;
import com.android.internal.telephony.TelephonyIntents;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment; import com.android.settings.RestrictedSettingsFragment;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -107,6 +107,7 @@ public class ApnSettings extends RestrictedSettingsFragment
private static boolean mRestoreDefaultApnMode; private static boolean mRestoreDefaultApnMode;
private UserManager mUserManager; private UserManager mUserManager;
private TelephonyManager mTelephonyManager;
private RestoreApnUiHandler mRestoreApnUiHandler; private RestoreApnUiHandler mRestoreApnUiHandler;
private RestoreApnProcessHandler mRestoreApnProcessHandler; private RestoreApnProcessHandler mRestoreApnProcessHandler;
private HandlerThread mRestoreDefaultApnThread; private HandlerThread mRestoreDefaultApnThread;
@@ -130,22 +131,24 @@ public class ApnSettings extends RestrictedSettingsFragment
super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS);
} }
private final BroadcastReceiver mReceiver = new BroadcastReceiver() { private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onPreciseDataConnectionStateChanged(
if (intent.getAction().equals( PreciseDataConnectionState dataConnectionState) {
TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) { if (dataConnectionState.getState() == TelephonyManager.DATA_CONNECTED) {
PhoneConstants.DataState state = getMobileDataState(intent);
switch (state) {
case CONNECTED:
if (!mRestoreDefaultApnMode) { if (!mRestoreDefaultApnMode) {
fillList(); fillList();
} else { } else {
showDialog(DIALOG_RESTORE_DEFAULTAPN); showDialog(DIALOG_RESTORE_DEFAULTAPN);
} }
break;
} }
} else if(intent.getAction().equals( }
};
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(
TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED)) { TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED)) {
if (!mRestoreDefaultApnMode) { if (!mRestoreDefaultApnMode) {
int extraSubId = intent.getIntExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID, int extraSubId = intent.getIntExtra(TelephonyManager.EXTRA_SUBSCRIPTION_ID,
@@ -156,6 +159,7 @@ public class ApnSettings extends RestrictedSettingsFragment
// subscription has changed // subscription has changed
mSubId = extraSubId; mSubId = extraSubId;
mSubscriptionInfo = getSubscriptionInfo(mSubId); mSubscriptionInfo = getSubscriptionInfo(mSubId);
restartPhoneStateListener(mSubId);
} }
fillList(); fillList();
} }
@@ -163,13 +167,25 @@ public class ApnSettings extends RestrictedSettingsFragment
} }
}; };
private static PhoneConstants.DataState getMobileDataState(Intent intent) { private void restartPhoneStateListener(int subId) {
String str = intent.getStringExtra(PhoneConstants.STATE_KEY); if (mRestoreDefaultApnMode) {
if (str != null) { return;
return Enum.valueOf(PhoneConstants.DataState.class, str);
} else {
return PhoneConstants.DataState.DISCONNECTED;
} }
final TelephonyManager updatedTelephonyManager =
mTelephonyManager.createForSubscriptionId(subId);
if (updatedTelephonyManager == null) {
return;
}
// restart monitoring when subscription has been changed
mTelephonyManager.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_NONE);
mTelephonyManager = updatedTelephonyManager;
mTelephonyManager.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE);
} }
@Override @Override
@@ -185,12 +201,12 @@ public class ApnSettings extends RestrictedSettingsFragment
SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID);
mPhoneId = SubscriptionUtil.getPhoneId(activity, mSubId); mPhoneId = SubscriptionUtil.getPhoneId(activity, mSubId);
mIntentFilter = new IntentFilter( mIntentFilter = new IntentFilter(
TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED); TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED);
mIntentFilter.addAction(TelephonyManager.ACTION_SUBSCRIPTION_CARRIER_IDENTITY_CHANGED);
setIfOnlyAvailableForAdmins(true); setIfOnlyAvailableForAdmins(true);
mSubscriptionInfo = getSubscriptionInfo(mSubId); mSubscriptionInfo = getSubscriptionInfo(mSubId);
mTelephonyManager = activity.getSystemService(TelephonyManager.class);
CarrierConfigManager configManager = (CarrierConfigManager) CarrierConfigManager configManager = (CarrierConfigManager)
getSystemService(Context.CARRIER_CONFIG_SERVICE); getSystemService(Context.CARRIER_CONFIG_SERVICE);
@@ -235,6 +251,8 @@ public class ApnSettings extends RestrictedSettingsFragment
getActivity().registerReceiver(mReceiver, mIntentFilter); getActivity().registerReceiver(mReceiver, mIntentFilter);
restartPhoneStateListener(mSubId);
if (!mRestoreDefaultApnMode) { if (!mRestoreDefaultApnMode) {
fillList(); fillList();
} }
@@ -249,6 +267,9 @@ public class ApnSettings extends RestrictedSettingsFragment
} }
getActivity().unregisterReceiver(mReceiver); getActivity().unregisterReceiver(mReceiver);
mTelephonyManager.listen(mPhoneStateListener,
PhoneStateListener.LISTEN_NONE);
} }
@Override @Override