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);
}