[Settings] Replacing accessing of PhoneConstants$DataState
Replaced by PhoneStateListner#onPreciseDataConnectionStateChanged(). Bug: 147080692 Test: manual Change-Id: I0a00bac335a62079913a95bf5ab6cdb9fbcd069d
This commit is contained in:
@@ -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 PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
|
||||||
|
@Override
|
||||||
|
public void onPreciseDataConnectionStateChanged(
|
||||||
|
PreciseDataConnectionState dataConnectionState) {
|
||||||
|
if (dataConnectionState.getState() == TelephonyManager.DATA_CONNECTED) {
|
||||||
|
if (!mRestoreDefaultApnMode) {
|
||||||
|
fillList();
|
||||||
|
} else {
|
||||||
|
showDialog(DIALOG_RESTORE_DEFAULTAPN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
if (intent.getAction().equals(
|
if (intent.getAction().equals(
|
||||||
TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED)) {
|
|
||||||
PhoneConstants.DataState state = getMobileDataState(intent);
|
|
||||||
switch (state) {
|
|
||||||
case CONNECTED:
|
|
||||||
if (!mRestoreDefaultApnMode) {
|
|
||||||
fillList();
|
|
||||||
} else {
|
|
||||||
showDialog(DIALOG_RESTORE_DEFAULTAPN);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
} else 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
|
||||||
|
Reference in New Issue
Block a user