Change to add user_visible field to Carriers table.

Also adding config to control if adding APNs is allowed.

Bug: 24519879
Bug: 24681288
Change-Id: I59466f5489606162a10e883ede378e575a189fb3
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index 3b3ce2f..fdc0914 100644
--- a/src/com/android/settings/ApnSettings.java
+++ b/src/com/android/settings/ApnSettings.java
@@ -114,6 +114,7 @@
     private boolean mUnavailable;
 
     private boolean mHideImsApn;
+    private boolean mAllowAddingApns;
 
     private final BroadcastReceiver mMobileStateReceiver = new BroadcastReceiver() {
         @Override
@@ -171,6 +172,7 @@
                 getSystemService(Context.CARRIER_CONFIG_SERVICE);
         PersistableBundle b = configManager.getConfig();
         mHideImsApn = b.getBoolean(CarrierConfigManager.KEY_HIDE_IMS_APN_BOOL);
+        mAllowAddingApns = b.getBoolean(CarrierConfigManager.KEY_ALLOW_ADDING_APNS_BOOL);
     }
 
     @Override
@@ -235,16 +237,16 @@
         final String mccmnc = mSubscriptionInfo == null ? ""
             : tm.getSimOperator(mSubscriptionInfo.getSubscriptionId());
         Log.d(TAG, "mccmnc = " + mccmnc);
-        String where = "numeric=\""
-            + mccmnc
-            + "\" AND NOT (type='ia' AND (apn=\"\" OR apn IS NULL))";
+        StringBuilder where = new StringBuilder("numeric=\"" + mccmnc +
+                "\" AND NOT (type='ia' AND (apn=\"\" OR apn IS NULL)) AND user_visible!=0");
+
         if (mHideImsApn) {
-            where = where + " AND NOT (type='ims')";
+            where.append(" AND NOT (type='ims')");
         }
 
         Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, new String[] {
-                "_id", "name", "apn", "type", "mvno_type", "mvno_match_data"}, where, null,
-                Telephony.Carriers.DEFAULT_SORT_ORDER);
+                "_id", "name", "apn", "type", "mvno_type", "mvno_match_data"}, where.toString(),
+                null, Telephony.Carriers.DEFAULT_SORT_ORDER);
 
         if (cursor != null) {
             IccRecords r = null;
@@ -326,10 +328,12 @@
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
         if (!mUnavailable) {
-            menu.add(0, MENU_NEW, 0,
-                    getResources().getString(R.string.menu_new))
-                    .setIcon(android.R.drawable.ic_menu_add)
-                    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+            if (mAllowAddingApns) {
+                menu.add(0, MENU_NEW, 0,
+                        getResources().getString(R.string.menu_new))
+                        .setIcon(android.R.drawable.ic_menu_add)
+                        .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+            }
             menu.add(0, MENU_RESTORE, 0,
                     getResources().getString(R.string.menu_restore))
                     .setIcon(android.R.drawable.ic_menu_upload);