Merge "Fix ACTION_NFC_SETTINGS doesn't show connection preference"
diff --git a/src/com/android/settings/network/ApnEditor.java b/src/com/android/settings/network/ApnEditor.java
index cceb31d..5133d45 100644
--- a/src/com/android/settings/network/ApnEditor.java
+++ b/src/com/android/settings/network/ApnEditor.java
@@ -313,13 +313,23 @@
     static String formatInteger(String value) {
         try {
             final int intValue = Integer.parseInt(value);
-            return String.format("%d", intValue);
+            return String.format(getCorrectDigitsFormat(value), intValue);
         } catch (NumberFormatException e) {
             return value;
         }
     }
 
     /**
+     * Get the digits format so we preserve leading 0's.
+     * MCCs are 3 digits and MNCs are either 2 or 3.
+     */
+    static String getCorrectDigitsFormat(String value) {
+        if (value.length() == 2) return "%02d";
+        else return "%03d";
+    }
+
+
+    /**
      * Check if passed in array of APN types indicates all APN types
      * @param apnTypes array of APN types. "*" indicates all types.
      * @return true if all apn types are included in the array, false otherwise
diff --git a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
index 35f68a0..2fa9de1 100644
--- a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
+++ b/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
@@ -440,6 +440,8 @@
     @Test
     public void formatInteger_shouldParseString() {
         assertThat(ApnEditor.formatInteger("42")).isEqualTo("42");
+        assertThat(ApnEditor.formatInteger("01")).isEqualTo("01");
+        assertThat(ApnEditor.formatInteger("001")).isEqualTo("001");
     }
 
     @Test
@@ -489,4 +491,4 @@
             mUri = uri;
         }
     }
-}
\ No newline at end of file
+}