From 95ceb12cdb0121e21373a4004a6be06b9ec7acc8 Mon Sep 17 00:00:00 2001 From: Taesu Lee Date: Mon, 4 May 2020 17:00:36 +0900 Subject: [PATCH] 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 --- src/android/support/v7/mms/MmsManager.java | 23 +++++++++++++------ .../PerSubscriptionSettingsActivity.java | 17 ++++++++------ 2 files changed, 26 insertions(+), 14 deletions(-) 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 class MmsManager { */ 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,17 +157,26 @@ public class MmsManager { */ 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 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.Preference.OnPreferenceClickListener; 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 @@ public class PerSubscriptionSettingsActivity extends BugleActionBarActivity { } // 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)); }