From dbda7588419a351d24f4df4ee660f02626471a0b Mon Sep 17 00:00:00 2001 From: Sam Whited Date: Sat, 17 Jan 2015 22:10:46 -0500 Subject: [PATCH] Add pref to change MMS user agent Closes #2363 // FREEBIE --- res/values/strings.xml | 1 + res/xml/preferences_manual_mms.xml | 8 +++++++- res/xml/preferences_sms_mms.xml | 2 +- .../securesms/mms/LegacyMmsConnection.java | 11 +++++++---- .../securesms/preferences/MmsPreferencesFragment.java | 3 +++ .../securesms/util/TextSecurePreferences.java | 11 +++++++++++ 6 files changed, 30 insertions(+), 6 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 1f19340f2f..06024d92f0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -760,6 +760,7 @@ Custom Advanced App protection + MMS User Agent Manual MMS settings Use manual MMS settings Override system MMS settings with the information below. diff --git a/res/xml/preferences_manual_mms.xml b/res/xml/preferences_manual_mms.xml index abfde94989..8bf1d5e890 100644 --- a/res/xml/preferences_manual_mms.xml +++ b/res/xml/preferences_manual_mms.xml @@ -33,4 +33,10 @@ android:title="@string/preferences__mmsc_password" android:inputType="textVisiblePassword"/> - \ No newline at end of file + + + diff --git a/res/xml/preferences_sms_mms.xml b/res/xml/preferences_sms_mms.xml index c6f44f498d..a7083cb42e 100644 --- a/res/xml/preferences_sms_mms.xml +++ b/res/xml/preferences_sms_mms.xml @@ -28,4 +28,4 @@ - \ No newline at end of file + diff --git a/src/org/thoughtcrime/securesms/mms/LegacyMmsConnection.java b/src/org/thoughtcrime/securesms/mms/LegacyMmsConnection.java index ecead3399c..00222a3e28 100644 --- a/src/org/thoughtcrime/securesms/mms/LegacyMmsConnection.java +++ b/src/org/thoughtcrime/securesms/mms/LegacyMmsConnection.java @@ -39,6 +39,7 @@ import org.apache.http.message.BasicHeader; import org.thoughtcrime.securesms.database.ApnDatabase; import org.thoughtcrime.securesms.util.TelephonyUtil; import org.thoughtcrime.securesms.util.Conversions; +import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import org.whispersystems.libaxolotl.util.guava.Optional; @@ -53,6 +54,9 @@ import java.util.List; @SuppressWarnings("deprecation") public abstract class LegacyMmsConnection { + + public static final String USER_AGENT = "Android-Mms/2.0"; + private static final String TAG = "MmsCommunication"; protected final Context context; @@ -124,8 +128,7 @@ public abstract class LegacyMmsConnection { return baos.toByteArray(); } - protected CloseableHttpClient constructHttpClient() - throws IOException { + protected CloseableHttpClient constructHttpClient() throws IOException { RequestConfig config = RequestConfig.custom() .setConnectTimeout(20 * 1000) .setConnectionRequestTimeout(20 * 1000) @@ -133,7 +136,7 @@ public abstract class LegacyMmsConnection { .setMaxRedirects(20) .build(); - URL mmsc = new URL(apn.getMmsc()); + URL mmsc = new URL(apn.getMmsc()); CredentialsProvider credsProvider = new BasicCredentialsProvider(); if (apn.hasAuthentication()) { @@ -144,7 +147,7 @@ public abstract class LegacyMmsConnection { return HttpClients.custom() .setConnectionReuseStrategy(new NoConnectionReuseStrategyHC4()) .setRedirectStrategy(new LaxRedirectStrategy()) - .setUserAgent("Android-Mms/2.0") + .setUserAgent(TextSecurePreferences.getMmsUserAgent(context, USER_AGENT)) .setConnectionManager(new BasicHttpClientConnectionManager()) .setDefaultRequestConfig(config) .setDefaultCredentialsProvider(credsProvider) diff --git a/src/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java b/src/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java index 243e2c5f03..e04547a570 100644 --- a/src/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/MmsPreferencesFragment.java @@ -90,6 +90,9 @@ public class MmsPreferencesFragment extends PreferenceFragment { ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMSC_PASSWORD_PREF)) .setDefaultValue(apnDefaults.getPassword()); + + ((CustomDefaultPreference)findPreference(TextSecurePreferences.MMS_USER_AGENT)) + .setDefaultValue(LegacyMmsConnection.USER_AGENT); } } diff --git a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java index fc74ea9220..49d5b628ea 100644 --- a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -5,6 +5,8 @@ import android.os.Build; import android.preference.PreferenceManager; import android.util.Log; +import org.thoughtcrime.securesms.R; + import java.io.IOException; public class TextSecurePreferences { @@ -45,6 +47,8 @@ public class TextSecurePreferences { private static final String ENTER_SENDS_PREF = "pref_enter_sends"; private static final String ENTER_PRESENT_PREF = "pref_enter_key"; private static final String SMS_DELIVERY_REPORT_PREF = "pref_delivery_report_sms"; + public static final String MMS_USER_AGENT = "pref_mms_user_agent"; + private static final String MMS_CUSTOM_USER_AGENT = "pref_custom_mms_user_agent"; private static final String THREAD_TRIM_ENABLED = "pref_trim_threads"; private static final String LOCAL_NUMBER_PREF = "pref_local_number"; private static final String VERIFYING_STATE_PREF = "pref_verifying"; @@ -267,6 +271,13 @@ public class TextSecurePreferences { setStringPreference(context, MMSC_PASSWORD_PREF, value); } + public static String getMmsUserAgent(Context context, String defaultUserAgent) { + boolean useCustom = getBooleanPreference(context, MMS_CUSTOM_USER_AGENT, false); + + if (useCustom) return getStringPreference(context, MMS_USER_AGENT, defaultUserAgent); + else return defaultUserAgent; + } + public static String getIdentityContactUri(Context context) { return getStringPreference(context, IDENTITY_PREF, null); }