diff options
author | Roman Birg <roman@cyngn.com> | 2015-12-16 17:43:11 -0800 |
---|---|---|
committer | Roman Birg <roman@cyngn.com> | 2015-12-21 12:06:10 -0800 |
commit | 076ee754f132a210fcd4d901bc04bb4f09f54fe9 (patch) | |
tree | a1d1c815cb8c4c4f6d961200390b2e6a599b167c /src/com/android/settings/profiles | |
parent | f01ba0833a96eed3c6c4d8628fb95428d634ce62 (diff) | |
download | packages_apps_Settings-076ee754f132a210fcd4d901bc04bb4f09f54fe9.zip packages_apps_Settings-076ee754f132a210fcd4d901bc04bb4f09f54fe9.tar.gz packages_apps_Settings-076ee754f132a210fcd4d901bc04bb4f09f54fe9.tar.bz2 |
Settings: respect telephony config for profiles override
Some networks specifically disallow 2G to be selected as the preferred
setting. We should respect that.
Change-Id: Ic4414ed78c9f38b5c11969300dc858725ee3b2c6
Signed-off-by: Roman Birg <roman@cyngn.com>
Diffstat (limited to 'src/com/android/settings/profiles')
-rw-r--r-- | src/com/android/settings/profiles/SetupActionsFragment.java | 40 |
1 files changed, 35 insertions, 5 deletions
diff --git a/src/com/android/settings/profiles/SetupActionsFragment.java b/src/com/android/settings/profiles/SetupActionsFragment.java index 7a433b4..0402a7d 100644 --- a/src/com/android/settings/profiles/SetupActionsFragment.java +++ b/src/com/android/settings/profiles/SetupActionsFragment.java @@ -16,6 +16,7 @@ package com.android.settings.profiles; import android.app.Activity; +import android.content.pm.PackageManager; import com.android.internal.logging.MetricsLogger; import cyanogenmod.profiles.AirplaneModeSettings; import android.app.AlertDialog; @@ -803,14 +804,43 @@ public class SetupActionsFragment extends SettingsPreferenceFragment throw new UnsupportedOperationException("connection setting cannot be null"); } AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + boolean allow2g = true; + + // config_prefer_2g in p/s/Telephony + // if false, 2g is not available. + try { + final Context telephonyContext = getActivity() + .createPackageContext("com.android.phone", 0); + if (telephonyContext != null) { + int identifier = telephonyContext.getResources().getIdentifier("config_prefer_2g", + "bool", telephonyContext.getPackageName()); + if (identifier > 0) { + allow2g = telephonyContext.getResources().getBoolean(identifier); + android.util.Log.e("ro", "allow2g: " + allow2g); + } + } + } catch (PackageManager.NameNotFoundException e) { + // hmmm.... + } + final String[] connectionNames = - getResources().getStringArray(R.array.profile_networkmode_entries_4g); + getResources().getStringArray(allow2g ? R.array.profile_networkmode_entries_4g + : R.array.profile_networkmode_entries_no_2g); + final String[] connectionValues = + getResources().getStringArray(allow2g ? R.array.profile_networkmode_values_4g + : R.array.profile_networkmode_values_no_2g); - int defaultIndex = ConnectionOverrideItem.CM_MODE_UNCHANGED; // no action + int defaultIndex = connectionValues.length - 1; // no action is the last if (setting.isOverride()) { - defaultIndex = setting.getValue(); + // need to match the value + final int value = setting.getValue(); + for (int i = 0; i < connectionValues.length; i++) { + if (Integer.parseInt(connectionValues[i]) == value) { + defaultIndex = i; + break; + } + } } - builder.setTitle(ConnectionOverrideItem.getConnectionTitle(setting.getConnectionId())); builder.setSingleChoiceItems(connectionNames, defaultIndex, new DialogInterface.OnClickListener() { @@ -822,7 +852,7 @@ public class SetupActionsFragment extends SettingsPreferenceFragment break; default: setting.setOverride(true); - setting.setValue(item); + setting.setValue(Integer.parseInt(connectionValues[item])); } mProfile.setConnectionSettings(setting); mAdapter.notifyDataSetChanged(); |