OSDN Git Service

avoid stopping app in case of accessing empty db
authorHyejin Kim <hyejin.kim@lge.com>
Thu, 14 Feb 2013 06:49:19 +0000 (15:49 +0900)
committerSungmin Choi <sungmin.choi@lge.com>
Fri, 15 Feb 2013 16:02:30 +0000 (01:02 +0900)
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

index de1ce63..3fbb5e3 100644 (file)
@@ -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();
-
-        ArrayList<Preference> mmsApnList = new ArrayList<Preference>();
-
-        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);
-
-            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();
+        if (cursor != null) {
+            PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list");
+            apnList.removeAll();
+
+            ArrayList<Preference> mmsApnList = new ArrayList<Preference>();
+
+            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);
+
+                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();
+                    }
+                    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;