From 88c80b10a23f52e5312dcd42565b18854b6dd158 Mon Sep 17 00:00:00 2001 From: Hyejin Kim Date: Thu, 14 Feb 2013 15:49:19 +0900 Subject: [PATCH] avoid stopping app in case of accessing empty db When accessing empty database, Setting App is stopped, sometimes. To avoid stopping app, check null for cursor Change-Id: I71ec067f502d12a9215a9abdbe9e23fc07af17bb --- src/com/android/settings/ApnSettings.java | 62 ++++++++++++----------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index de1ce635da6..3fbb5e3ab2c 100644 --- a/src/com/android/settings/ApnSettings.java +++ b/src/com/android/settings/ApnSettings.java @@ -164,43 +164,45 @@ public class ApnSettings extends PreferenceActivity implements "_id", "name", "apn", "type"}, where, null, Telephony.Carriers.DEFAULT_SORT_ORDER); - PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list"); - apnList.removeAll(); + if (cursor != null) { + PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list"); + apnList.removeAll(); - ArrayList mmsApnList = new ArrayList(); + ArrayList mmsApnList = new ArrayList(); - mSelectedKey = getSelectedApnKey(); - cursor.moveToFirst(); - while (!cursor.isAfterLast()) { - String name = cursor.getString(NAME_INDEX); - String apn = cursor.getString(APN_INDEX); - String key = cursor.getString(ID_INDEX); - String type = cursor.getString(TYPES_INDEX); + mSelectedKey = getSelectedApnKey(); + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + String name = cursor.getString(NAME_INDEX); + String apn = cursor.getString(APN_INDEX); + String key = cursor.getString(ID_INDEX); + String type = cursor.getString(TYPES_INDEX); - ApnPreference pref = new ApnPreference(this); + ApnPreference pref = new ApnPreference(this); - pref.setKey(key); - pref.setTitle(name); - pref.setSummary(apn); - pref.setPersistent(false); - pref.setOnPreferenceChangeListener(this); + pref.setKey(key); + pref.setTitle(name); + pref.setSummary(apn); + pref.setPersistent(false); + pref.setOnPreferenceChangeListener(this); - boolean selectable = ((type == null) || !type.equals("mms")); - pref.setSelectable(selectable); - if (selectable) { - if ((mSelectedKey != null) && mSelectedKey.equals(key)) { - pref.setChecked(); + boolean selectable = ((type == null) || !type.equals("mms")); + pref.setSelectable(selectable); + if (selectable) { + if ((mSelectedKey != null) && mSelectedKey.equals(key)) { + pref.setChecked(); + } + apnList.addPreference(pref); + } else { + mmsApnList.add(pref); } - apnList.addPreference(pref); - } else { - mmsApnList.add(pref); + cursor.moveToNext(); } - cursor.moveToNext(); - } - cursor.close(); + cursor.close(); - for (Preference preference : mmsApnList) { - apnList.addPreference(preference); + for (Preference preference : mmsApnList) { + apnList.addPreference(preference); + } } } @@ -330,7 +332,7 @@ public class ApnSettings extends PreferenceActivity implements switch (msg.what) { case EVENT_RESTORE_DEFAULTAPN_START: ContentResolver resolver = getContentResolver(); - resolver.delete(DEFAULTAPN_URI, null, null); + resolver.delete(DEFAULTAPN_URI, null, null); mRestoreApnUiHandler .sendEmptyMessage(EVENT_RESTORE_DEFAULTAPN_COMPLETE); break;