Hide APN prefs if platform APIs are used

The APN prefs is available if legacy APIs are used with local APN db
only.

Test: Manual

Change-Id: I5883dcb2c406acc601787edd02e0d3272732e6d7
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
diff --git a/src/android/support/v7/mms/MmsManager.java b/src/android/support/v7/mms/MmsManager.java
index 4a72a32..642a141 100644
--- a/src/android/support/v7/mms/MmsManager.java
+++ b/src/android/support/v7/mms/MmsManager.java
@@ -135,13 +135,13 @@
      */
     public static void sendMultimediaMessage(int subId, Context context, Uri contentUri,
             String locationUrl, PendingIntent sentIntent) {
-        if (Utils.hasMmsApi() && !sForceLegacyMms) {
+        if (shouldUseLegacyMms()) {
+            MmsService.startRequest(context, new SendRequest(locationUrl, contentUri, sentIntent));
+        } else {
             subId = Utils.getEffectiveSubscriptionId(subId);
             final SmsManager smsManager = Utils.getSmsManager(subId);
             smsManager.sendMultimediaMessage(context, contentUri, locationUrl,
                     getConfigOverrides(subId), sentIntent);
-        } else {
-            MmsService.startRequest(context, new SendRequest(locationUrl, contentUri, sentIntent));
         }
     }
 
@@ -157,18 +157,27 @@
      */
     public static void downloadMultimediaMessage(int subId, Context context, String locationUrl,
             Uri contentUri, PendingIntent downloadedIntent) {
-        if (Utils.hasMmsApi() && !sForceLegacyMms) {
+        if (shouldUseLegacyMms()) {
+            MmsService.startRequest(context,
+                    new DownloadRequest(locationUrl, contentUri, downloadedIntent));
+        } else {
             subId = Utils.getEffectiveSubscriptionId(subId);
             final SmsManager smsManager = Utils.getSmsManager(subId);
             smsManager.downloadMultimediaMessage(context, locationUrl, contentUri,
                     getConfigOverrides(subId), downloadedIntent);
-        } else {
-            MmsService.startRequest(context,
-                    new DownloadRequest(locationUrl, contentUri, downloadedIntent));
         }
     }
 
     /**
+     * Checks if we should use legacy APIs for MMS.
+     *
+     * @return true if forced to use legacy APIs or platform doesn't supports MMS APIs.
+     */
+    public static boolean shouldUseLegacyMms() {
+        return sForceLegacyMms || !Utils.hasMmsApi();
+    }
+
+    /**
      * Get carrier configuration values overrides when platform MMS API is called.
      * We only need to compute this if customized carrier config values loader or
      * user agent info loader are set
diff --git a/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java b/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java
index 9ad90d8..18a3f47 100644
--- a/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java
+++ b/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java
@@ -28,10 +28,12 @@
 import android.preference.PreferenceCategory;
 import android.preference.PreferenceFragment;
 import android.preference.PreferenceScreen;
-import androidx.core.app.NavUtils;
 import android.text.TextUtils;
 import android.view.MenuItem;
 
+import androidx.appcompat.mms.MmsManager;
+import androidx.core.app.NavUtils;
+
 import com.android.messaging.Factory;
 import com.android.messaging.R;
 import com.android.messaging.datamodel.ParticipantRefresh;
@@ -159,17 +161,18 @@
             }
 
             // Access Point Names (APNs)
-            final Preference apnsPref = findPreference(getString(R.string.sms_apns_key));
+            final PreferenceScreen apnsScreen =
+                    (PreferenceScreen) findPreference(getString(R.string.sms_apns_key));
 
-            if (MmsUtils.useSystemApnTable() && !ApnDatabase.doesDatabaseExist()) {
-                // Don't remove the ability to edit the local APN prefs if this device lets us
+            if (!MmsManager.shouldUseLegacyMms()
+                    || (MmsUtils.useSystemApnTable() && !ApnDatabase.doesDatabaseExist())) {
+                // 1) Remove the ability to edit the local APN prefs if it doesn't use legacy APIs.
+                // 2) Don't remove the ability to edit the local APN prefs if this device lets us
                 // access the system APN, but we can't find the MCC/MNC in the APN table and we
                 // created the local APN table in case the MCC/MNC was in there. In other words,
                 // if the local APN table exists, let the user edit it.
-                advancedCategory.removePreference(apnsPref);
+                advancedCategory.removePreference((Preference) apnsScreen);
             } else {
-                final PreferenceScreen apnsScreen = (PreferenceScreen) findPreference(
-                        getString(R.string.sms_apns_key));
                 apnsScreen.setIntent(UIIntents.get()
                         .getApnSettingsIntent(getPreferenceScreen().getContext(), mSubId));
             }