1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 2afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Copyright (C) 2006 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.app.AlertDialog; 2020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Daiimport android.app.Dialog; 21afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.ContentUris; 22afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.ContentValues; 23afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.Intent; 24afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.SharedPreferences; 25afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.content.res.Resources; 26afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.database.Cursor; 27afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.net.Uri; 28afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 29afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.SystemProperties; 30afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.EditTextPreference; 31195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganeshimport android.preference.ListPreference; 32cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikangimport android.preference.CheckBoxPreference; 33afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.Preference; 34afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.preference.PreferenceActivity; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.provider.Telephony; 36d0de427f9ac976d09db6a645f83954899e0fef24John Huangimport android.telephony.TelephonyManager; 37afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.util.Log; 38afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.KeyEvent; 39afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.Menu; 40afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.view.MenuItem; 41afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 42d0de427f9ac976d09db6a645f83954899e0fef24John Huangimport com.android.internal.telephony.Phone; 43a52c5698ca9da9f681232ac92cc02de1138956a5Lorenzo Colittiimport com.android.internal.telephony.RILConstants; 44d0de427f9ac976d09db6a645f83954899e0fef24John Huangimport com.android.internal.telephony.TelephonyProperties; 45195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 46afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 47195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganeshpublic class ApnEditor extends PreferenceActivity 48195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh implements SharedPreferences.OnSharedPreferenceChangeListener, 49195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh Preference.OnPreferenceChangeListener { 50afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 51afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final static String TAG = ApnEditor.class.getSimpleName(); 52195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 53afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private final static String SAVED_POS = "pos"; 54195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh private final static String KEY_AUTH_TYPE = "auth_type"; 55a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti private final static String KEY_PROTOCOL = "apn_protocol"; 56d0de427f9ac976d09db6a645f83954899e0fef24John Huang private final static String KEY_ROAMING_PROTOCOL = "apn_roaming_protocol"; 57cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private final static String KEY_CARRIER_ENABLED = "carrier_enabled"; 58cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private final static String KEY_BEARER = "bearer"; 59195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 60afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_DELETE = Menu.FIRST; 61afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_SAVE = Menu.FIRST + 1; 62afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MENU_CANCEL = Menu.FIRST + 2; 6320108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai private static final int ERROR_DIALOG_ID = 0; 64195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static String sNotSet; 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mName; 67afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mApn; 68afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mProxy; 69afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mPort; 70afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mUser; 71afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mServer; 72afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mPassword; 73afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mMmsc; 74afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mMcc; 75afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mMnc; 76afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mMmsProxy; 77afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mMmsPort; 78195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh private ListPreference mAuthType; 79afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private EditTextPreference mApnType; 80a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti private ListPreference mProtocol; 81d0de427f9ac976d09db6a645f83954899e0fef24John Huang private ListPreference mRoamingProtocol; 82cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private CheckBoxPreference mCarrierEnabled; 83cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private ListPreference mBearer; 84195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 85afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mCurMnc; 86afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String mCurMcc; 87195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 88afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Uri mUri; 89afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Cursor mCursor; 90afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mNewApn; 91afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean mFirstTime; 92afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private Resources mRes; 93195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 94afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 95afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Standard projection for the interesting columns of a normal note. 96afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 97afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String[] sProjection = new String[] { 98afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers._ID, // 0 99afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.NAME, // 1 100afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.APN, // 2 101afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.PROXY, // 3 102afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.PORT, // 4 103afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.USER, // 5 104afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.SERVER, // 6 105afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.PASSWORD, // 7 106afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.MMSC, // 8 107afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.MCC, // 9 108afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.MNC, // 10 109afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.NUMERIC, // 11 110afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.MMSPROXY,// 12 111afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Telephony.Carriers.MMSPORT, // 13 112195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh Telephony.Carriers.AUTH_TYPE, // 14 113195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh Telephony.Carriers.TYPE, // 15 114a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti Telephony.Carriers.PROTOCOL, // 16 115cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang Telephony.Carriers.CARRIER_ENABLED, // 17 116cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang Telephony.Carriers.BEARER, // 18 117d0de427f9ac976d09db6a645f83954899e0fef24John Huang Telephony.Carriers.ROAMING_PROTOCOL // 19 118afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project }; 119195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 120afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int ID_INDEX = 0; 121afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int NAME_INDEX = 1; 122afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int APN_INDEX = 2; 123afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int PROXY_INDEX = 3; 124afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int PORT_INDEX = 4; 125afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int USER_INDEX = 5; 126afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int SERVER_INDEX = 6; 127afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int PASSWORD_INDEX = 7; 128afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MMSC_INDEX = 8; 129afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MCC_INDEX = 9; 130afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MNC_INDEX = 10; 131afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MMSPROXY_INDEX = 12; 132afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final int MMSPORT_INDEX = 13; 133195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh private static final int AUTH_TYPE_INDEX = 14; 134195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh private static final int TYPE_INDEX = 15; 135a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti private static final int PROTOCOL_INDEX = 16; 136cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private static final int CARRIER_ENABLED_INDEX = 17; 137cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private static final int BEARER_INDEX = 18; 138d0de427f9ac976d09db6a645f83954899e0fef24John Huang private static final int ROAMING_PROTOCOL_INDEX = 19; 139195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 140195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 141afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 142afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onCreate(Bundle icicle) { 143afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(icicle); 144afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 145afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.apn_editor); 146afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 147afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project sNotSet = getResources().getString(R.string.apn_not_set); 148afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mName = (EditTextPreference) findPreference("apn_name"); 149afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mApn = (EditTextPreference) findPreference("apn_apn"); 150afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mProxy = (EditTextPreference) findPreference("apn_http_proxy"); 151afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPort = (EditTextPreference) findPreference("apn_http_port"); 152afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUser = (EditTextPreference) findPreference("apn_user"); 153afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mServer = (EditTextPreference) findPreference("apn_server"); 154afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPassword = (EditTextPreference) findPreference("apn_password"); 155afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsProxy = (EditTextPreference) findPreference("apn_mms_proxy"); 156afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsPort = (EditTextPreference) findPreference("apn_mms_port"); 157afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsc = (EditTextPreference) findPreference("apn_mmsc"); 158afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMcc = (EditTextPreference) findPreference("apn_mcc"); 159afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMnc = (EditTextPreference) findPreference("apn_mnc"); 160afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mApnType = (EditTextPreference) findPreference("apn_type"); 161195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 162a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE); 163195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setOnPreferenceChangeListener(this); 164195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 165a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mProtocol = (ListPreference) findPreference(KEY_PROTOCOL); 166a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mProtocol.setOnPreferenceChangeListener(this); 167a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti 168d0de427f9ac976d09db6a645f83954899e0fef24John Huang mRoamingProtocol = (ListPreference) findPreference(KEY_ROAMING_PROTOCOL); 169d0de427f9ac976d09db6a645f83954899e0fef24John Huang // Only enable this on CDMA phones for now, since it may cause problems on other phone 170d0de427f9ac976d09db6a645f83954899e0fef24John Huang // types. (This screen is not normally accessible on CDMA phones, but is useful for 171d0de427f9ac976d09db6a645f83954899e0fef24John Huang // testing.) 172d0de427f9ac976d09db6a645f83954899e0fef24John Huang TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 173d0de427f9ac976d09db6a645f83954899e0fef24John Huang if (tm.getCurrentPhoneType() == Phone.PHONE_TYPE_CDMA) { 174d0de427f9ac976d09db6a645f83954899e0fef24John Huang mRoamingProtocol.setOnPreferenceChangeListener(this); 175d0de427f9ac976d09db6a645f83954899e0fef24John Huang } else { 176d0de427f9ac976d09db6a645f83954899e0fef24John Huang getPreferenceScreen().removePreference(mRoamingProtocol); 177d0de427f9ac976d09db6a645f83954899e0fef24John Huang } 178d0de427f9ac976d09db6a645f83954899e0fef24John Huang 179cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mCarrierEnabled = (CheckBoxPreference) findPreference(KEY_CARRIER_ENABLED); 180cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang 181cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mBearer = (ListPreference) findPreference(KEY_BEARER); 182cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mBearer.setOnPreferenceChangeListener(this); 183cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang 184afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mRes = getResources(); 185195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 186afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final Intent intent = getIntent(); 187afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project final String action = intent.getAction(); 188afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 189afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mFirstTime = icicle == null; 190195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 191afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (action.equals(Intent.ACTION_EDIT)) { 192afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUri = intent.getData(); 193afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else if (action.equals(Intent.ACTION_INSERT)) { 1944d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani if (mFirstTime || icicle.getInt(SAVED_POS) == 0) { 195afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUri = getContentResolver().insert(intent.getData(), new ContentValues()); 196afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 197195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mUri = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, 198afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project icicle.getInt(SAVED_POS)); 199afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 200afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mNewApn = true; 201afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // If we were unable to create a new note, then just finish 202afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // this activity. A RESULT_CANCELED will be sent back to the 203afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // original activity if they requested a result. 204afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mUri == null) { 205afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Log.w(TAG, "Failed to insert new telephony provider into " 206afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project + getIntent().getData()); 207afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 208afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 210195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 211afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // The new entry was created, so assume all will end well and 212afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // set the result to be returned. 213afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project setResult(RESULT_OK, (new Intent()).setAction(mUri.toString())); 214afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 215afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 217afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return; 218afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 219afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 220afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCursor = managedQuery(mUri, sProjection, null, null); 221afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCursor.moveToFirst(); 222195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 223afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project fillUi(); 224afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 225afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onResume() { 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 2294d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani getPreferenceScreen().getSharedPreferences() 2304d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani .registerOnSharedPreferenceChangeListener(this); 231afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 232195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 233afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 234afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onPause() { 2354d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani getPreferenceScreen().getSharedPreferences() 2364d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani .unregisterOnSharedPreferenceChangeListener(this); 237195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh super.onPause(); 238afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 239195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 240afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void fillUi() { 241195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh if (mFirstTime) { 242afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mFirstTime = false; 243afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Fill in all the values from the db in both text editor and summary 244afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mName.setText(mCursor.getString(NAME_INDEX)); 245afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mApn.setText(mCursor.getString(APN_INDEX)); 246afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mProxy.setText(mCursor.getString(PROXY_INDEX)); 247afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPort.setText(mCursor.getString(PORT_INDEX)); 248afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUser.setText(mCursor.getString(USER_INDEX)); 249afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mServer.setText(mCursor.getString(SERVER_INDEX)); 250afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPassword.setText(mCursor.getString(PASSWORD_INDEX)); 251afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsProxy.setText(mCursor.getString(MMSPROXY_INDEX)); 252afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsPort.setText(mCursor.getString(MMSPORT_INDEX)); 253afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsc.setText(mCursor.getString(MMSC_INDEX)); 254afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMcc.setText(mCursor.getString(MCC_INDEX)); 255afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMnc.setText(mCursor.getString(MNC_INDEX)); 256afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mApnType.setText(mCursor.getString(TYPE_INDEX)); 257afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mNewApn) { 258195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh String numeric = 259c38866843e966622346dc8f7b028749cac9c2198Wink Saville SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC); 260afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // MCC is first 3 chars and then in 2 - 3 chars of MNC 261afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (numeric != null && numeric.length() > 4) { 262afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Country code 263afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String mcc = numeric.substring(0, 3); 264afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Network code 265afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String mnc = numeric.substring(3); 266afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // Auto populate MNC and MCC for new entries, based on what SIM reports 267afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMcc.setText(mcc); 268afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMnc.setText(mnc); 269afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCurMnc = mnc; 270afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mCurMcc = mcc; 271afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 272afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 273195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh int authVal = mCursor.getInt(AUTH_TYPE_INDEX); 274195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh if (authVal != -1) { 275195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setValueIndex(authVal); 2761929008ac5b45af96f2175b5232c3c66d2474f52Marta Białka } else { 2771929008ac5b45af96f2175b5232c3c66d2474f52Marta Białka mAuthType.setValue(null); 278195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } 279195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 280a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mProtocol.setValue(mCursor.getString(PROTOCOL_INDEX)); 281d0de427f9ac976d09db6a645f83954899e0fef24John Huang mRoamingProtocol.setValue(mCursor.getString(ROAMING_PROTOCOL_INDEX)); 282cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mCarrierEnabled.setChecked(mCursor.getInt(CARRIER_ENABLED_INDEX)==1); 283cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mBearer.setValue(mCursor.getString(BEARER_INDEX)); 284afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 285195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 286afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mName.setSummary(checkNull(mName.getText())); 287afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mApn.setSummary(checkNull(mApn.getText())); 288afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mProxy.setSummary(checkNull(mProxy.getText())); 289afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPort.setSummary(checkNull(mPort.getText())); 290afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mUser.setSummary(checkNull(mUser.getText())); 291afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mServer.setSummary(checkNull(mServer.getText())); 292afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mPassword.setSummary(starify(mPassword.getText())); 293afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsProxy.setSummary(checkNull(mMmsProxy.getText())); 294afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsPort.setSummary(checkNull(mMmsPort.getText())); 295afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMmsc.setSummary(checkNull(mMmsc.getText())); 296afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMcc.setSummary(checkNull(mMcc.getText())); 297afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mMnc.setSummary(checkNull(mMnc.getText())); 298afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mApnType.setSummary(checkNull(mApnType.getText())); 299195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 300195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh String authVal = mAuthType.getValue(); 301195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh if (authVal != null) { 302195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh int authValIndex = Integer.parseInt(authVal); 303195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setValueIndex(authValIndex); 304195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 305195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh String []values = mRes.getStringArray(R.array.apn_auth_entries); 306195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setSummary(values[authValIndex]); 307195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } else { 308195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setSummary(sNotSet); 309195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } 310a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti 311a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mProtocol.setSummary( 312d0de427f9ac976d09db6a645f83954899e0fef24John Huang checkNull(protocolDescription(mProtocol.getValue(), mProtocol))); 313d0de427f9ac976d09db6a645f83954899e0fef24John Huang mRoamingProtocol.setSummary( 314d0de427f9ac976d09db6a645f83954899e0fef24John Huang checkNull(protocolDescription(mRoamingProtocol.getValue(), mRoamingProtocol))); 315cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mBearer.setSummary( 316cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang checkNull(bearerDescription(mBearer.getValue()))); 317a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti } 318a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti 319a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti /** 320a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti * Returns the UI choice (e.g., "IPv4/IPv6") corresponding to the given 321a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti * raw value of the protocol preference (e.g., "IPV4V6"). If unknown, 322a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti * return null. 323a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti */ 324d0de427f9ac976d09db6a645f83954899e0fef24John Huang private String protocolDescription(String raw, ListPreference protocol) { 325d0de427f9ac976d09db6a645f83954899e0fef24John Huang int protocolIndex = protocol.findIndexOfValue(raw); 326a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti if (protocolIndex == -1) { 327a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti return null; 328a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti } else { 329a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti String[] values = mRes.getStringArray(R.array.apn_protocol_entries); 330a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti try { 331a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti return values[protocolIndex]; 332a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti } catch (ArrayIndexOutOfBoundsException e) { 333a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti return null; 334a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti } 335a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti } 336195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } 337195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 338cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang private String bearerDescription(String raw) { 339cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang int mBearerIndex = mBearer.findIndexOfValue(raw); 340cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang if (mBearerIndex == -1) { 341cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang return null; 342cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } else { 343cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang String[] values = mRes.getStringArray(R.array.bearer_entries); 344cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang try { 345cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang return values[mBearerIndex]; 346cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } catch (ArrayIndexOutOfBoundsException e) { 347cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang return null; 348cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } 349cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } 350cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } 351cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang 352195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh public boolean onPreferenceChange(Preference preference, Object newValue) { 353195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh String key = preference.getKey(); 354195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh if (KEY_AUTH_TYPE.equals(key)) { 355195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh try { 356195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh int index = Integer.parseInt((String) newValue); 357195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setValueIndex(index); 358195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 359195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh String []values = mRes.getStringArray(R.array.apn_auth_entries); 360195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh mAuthType.setSummary(values[index]); 361195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } catch (NumberFormatException e) { 362195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh return false; 363195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } 364d0de427f9ac976d09db6a645f83954899e0fef24John Huang } else if (KEY_PROTOCOL.equals(key)) { 365d0de427f9ac976d09db6a645f83954899e0fef24John Huang String protocol = protocolDescription((String) newValue, mProtocol); 366a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti if (protocol == null) { 367a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti return false; 368a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti } 369a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mProtocol.setSummary(protocol); 370a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti mProtocol.setValue((String) newValue); 371d0de427f9ac976d09db6a645f83954899e0fef24John Huang } else if (KEY_ROAMING_PROTOCOL.equals(key)) { 372d0de427f9ac976d09db6a645f83954899e0fef24John Huang String protocol = protocolDescription((String) newValue, mRoamingProtocol); 373d0de427f9ac976d09db6a645f83954899e0fef24John Huang if (protocol == null) { 374d0de427f9ac976d09db6a645f83954899e0fef24John Huang return false; 375d0de427f9ac976d09db6a645f83954899e0fef24John Huang } 376d0de427f9ac976d09db6a645f83954899e0fef24John Huang mRoamingProtocol.setSummary(protocol); 377d0de427f9ac976d09db6a645f83954899e0fef24John Huang mRoamingProtocol.setValue((String) newValue); 378d0de427f9ac976d09db6a645f83954899e0fef24John Huang } else if (KEY_BEARER.equals(key)) { 379cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang String bearer = bearerDescription((String) newValue); 380cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang if (bearer == null) { 381cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang return false; 382cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } 383cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mBearer.setValue((String) newValue); 384cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang mBearer.setSummary(bearer); 385cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } 386cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang 387195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh return true; 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 389afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 390afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 391afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onCreateOptionsMenu(Menu menu) { 392afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreateOptionsMenu(menu); 393afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project // If it's a new APN, then cancel will delete the new entry in onPause 394afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (!mNewApn) { 395afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(0, MENU_DELETE, 0, R.string.menu_delete) 3968472b1b60d7400a2a6dab8b54d1e1fd80659487fJustin Ho .setIcon(R.drawable.ic_menu_delete_holo_dark); 397afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 398afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(0, MENU_SAVE, 0, R.string.menu_save) 399afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .setIcon(android.R.drawable.ic_menu_save); 400afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project menu.add(0, MENU_CANCEL, 0, R.string.menu_cancel) 401afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project .setIcon(android.R.drawable.ic_menu_close_clear_cancel); 402afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 403afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 404afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 405afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 406afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onOptionsItemSelected(MenuItem item) { 407afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (item.getItemId()) { 408afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case MENU_DELETE: 409afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project deleteApn(); 410afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 411afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case MENU_SAVE: 412afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (validateAndSave(false)) { 413afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 414afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 415afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 416afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case MENU_CANCEL: 417afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mNewApn) { 418afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getContentResolver().delete(mUri, null, null); 419afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 420afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 421afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 422afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 423afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return super.onOptionsItemSelected(item); 424afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 425195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 426afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 427afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public boolean onKeyDown(int keyCode, KeyEvent event) { 428afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project switch (keyCode) { 429afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project case KeyEvent.KEYCODE_BACK: { 430afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (validateAndSave(false)) { 431afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 432afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 433afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 434afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 435afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 436afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return super.onKeyDown(keyCode, event); 437afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 438afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 439afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 440afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project protected void onSaveInstanceState(Bundle icicle) { 441afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onSaveInstanceState(icicle); 4424d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani if (validateAndSave(true)) { 4434d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani icicle.putInt(SAVED_POS, mCursor.getInt(ID_INDEX)); 4444d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani } 445afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 446195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 447afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project /** 448afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Check the key fields' validity and save if valid. 449afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @param force save even if the fields are not valid, if the app is 450afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * being suspended 451afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * @return true if the data was saved 452afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 453afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private boolean validateAndSave(boolean force) { 454afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String name = checkNotSet(mName.getText()); 455afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String apn = checkNotSet(mApn.getText()); 456afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String mcc = checkNotSet(mMcc.getText()); 457afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project String mnc = checkNotSet(mMnc.getText()); 458195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 45920108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai if (getErrorMsg() != null && !force) { 46020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai showDialog(ERROR_DIALOG_ID); 461afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return false; 462afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 463195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 464afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (!mCursor.moveToFirst()) { 465afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Log.w(TAG, 466afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project "Could not go to the first row in the Cursor when saving data."); 467afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return false; 468afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 469195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 4704d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani // If it's a new APN and a name or apn haven't been entered, then erase the entry 4714d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani if (force && mNewApn && name.length() < 1 && apn.length() < 1) { 4724d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani getContentResolver().delete(mUri, null, null); 4734d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani return false; 4744d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani } 4754d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani 476afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project ContentValues values = new ContentValues(); 477195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 4784d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani // Add a dummy name "Untitled", if the user exits the screen without adding a name but 4794d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani // entered other information worth keeping. 4804d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani values.put(Telephony.Carriers.NAME, 4814d31288fe30b2e8f2e0a5ff54b402912fd830df1Amith Yamasani name.length() < 1 ? getResources().getString(R.string.untitled_apn) : name); 482afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.APN, apn); 483afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.PROXY, checkNotSet(mProxy.getText())); 484afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.PORT, checkNotSet(mPort.getText())); 485afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.MMSPROXY, checkNotSet(mMmsProxy.getText())); 486afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.MMSPORT, checkNotSet(mMmsPort.getText())); 487afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.USER, checkNotSet(mUser.getText())); 488afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.SERVER, checkNotSet(mServer.getText())); 489afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.PASSWORD, checkNotSet(mPassword.getText())); 490195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh values.put(Telephony.Carriers.MMSC, checkNotSet(mMmsc.getText())); 491195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 492195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh String authVal = mAuthType.getValue(); 493195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh if (authVal != null) { 494195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh values.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(authVal)); 495195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh } 496195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 497a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5Lorenzo Colitti values.put(Telephony.Carriers.PROTOCOL, checkNotSet(mProtocol.getValue())); 498d0de427f9ac976d09db6a645f83954899e0fef24John Huang values.put(Telephony.Carriers.ROAMING_PROTOCOL, checkNotSet(mRoamingProtocol.getValue())); 499a52c5698ca9da9f681232ac92cc02de1138956a5Lorenzo Colitti 500afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.TYPE, checkNotSet(mApnType.getText())); 501afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 502afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.MCC, mcc); 503afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.MNC, mnc); 504195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 505afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.NUMERIC, mcc + mnc); 506195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 507afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mCurMnc != null && mCurMcc != null) { 508afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (mCurMnc.equals(mnc) && mCurMcc.equals(mcc)) { 509afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project values.put(Telephony.Carriers.CURRENT, 1); 510afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 511afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 512195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 513cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang String bearerVal = mBearer.getValue(); 514cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang if (bearerVal != null) { 515cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang values.put(Telephony.Carriers.BEARER, Integer.parseInt(bearerVal)); 516cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang } 517cd8b7c3d0bea0cfb5e5c55493a3b06f62f22700asinikang 518afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getContentResolver().update(mUri, values, null, null); 519195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 520afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return true; 521afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 522afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 52320108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai private String getErrorMsg() { 52420108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String errorMsg = null; 52520108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 52620108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String name = checkNotSet(mName.getText()); 52720108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String apn = checkNotSet(mApn.getText()); 52820108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String mcc = checkNotSet(mMcc.getText()); 52920108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String mnc = checkNotSet(mMnc.getText()); 53020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 53120108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai if (name.length() < 1) { 53220108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai errorMsg = mRes.getString(R.string.error_name_empty); 53320108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } else if (apn.length() < 1) { 53420108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai errorMsg = mRes.getString(R.string.error_apn_empty); 53520108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } else if (mcc.length() != 3) { 53620108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai errorMsg = mRes.getString(R.string.error_mcc_not3); 53720108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } else if ((mnc.length() & 0xFFFE) != 2) { 53820108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai errorMsg = mRes.getString(R.string.error_mnc_not23); 53920108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } 54020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 54120108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai return errorMsg; 54220108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } 54320108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 54420108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai @Override 54520108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai protected Dialog onCreateDialog(int id) { 54620108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 54720108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai if (id == ERROR_DIALOG_ID) { 54820108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String msg = getErrorMsg(); 54920108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 55020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai return new AlertDialog.Builder(this) 55120108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai .setTitle(R.string.error_title) 55220108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai .setPositiveButton(android.R.string.ok, null) 55320108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai .setMessage(msg) 55420108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai .create(); 55520108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } 55620108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 55720108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai return super.onCreateDialog(id); 55820108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } 55920108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 56020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai @Override 56120108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai protected void onPrepareDialog(int id, Dialog dialog) { 56220108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai super.onPrepareDialog(id, dialog); 56320108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 56420108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai if (id == ERROR_DIALOG_ID) { 56520108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai String msg = getErrorMsg(); 56620108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai 56720108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai if (msg != null) { 56820108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai ((AlertDialog)dialog).setMessage(msg); 56920108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } 57020108e2ed6d7fdc889d85702f7cbda906db141cfJiehua.Dai } 571afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 572afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 573afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private void deleteApn() { 574afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project getContentResolver().delete(mUri, null, null); 575afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project finish(); 576afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 577195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 578afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String starify(String value) { 579afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (value == null || value.length() == 0) { 580afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return sNotSet; 581afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 582afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project char[] password = new char[value.length()]; 583afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project for (int i = 0; i < password.length; i++) { 584afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project password[i] = '*'; 585afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 586afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return new String(password); 587afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 588afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 589195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 590afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String checkNull(String value) { 591afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (value == null || value.length() == 0) { 592afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return sNotSet; 593afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 594afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return value; 595afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 596afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 597195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 598afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private String checkNotSet(String value) { 599afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (value == null || value.equals(sNotSet)) { 600afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return ""; 601afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } else { 602afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project return value; 603afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 604afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 605195bc43460967e57e4c1131ba156083a93e0e4e8Jaikumar Ganesh 606afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 607afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project Preference pref = findPreference(key); 608afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project if (pref != null) { 609414ab76fe3cebce39dd49317b4e368a16cca0847Jiehua Dai if (pref.equals(mPassword)){ 610414ab76fe3cebce39dd49317b4e368a16cca0847Jiehua Dai pref.setSummary(starify(sharedPreferences.getString(key, ""))); 611414ab76fe3cebce39dd49317b4e368a16cca0847Jiehua Dai } else { 612414ab76fe3cebce39dd49317b4e368a16cca0847Jiehua Dai pref.setSummary(checkNull(sharedPreferences.getString(key, ""))); 613414ab76fe3cebce39dd49317b4e368a16cca0847Jiehua Dai } 614afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 615afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 616afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 617