Add pref to change MMS user agent

Closes #2363

// FREEBIE
pull/1/head
Sam Whited 10 years ago committed by Moxie Marlinspike
parent c6b3bb9f13
commit dbda758841

@ -760,6 +760,7 @@
<string name="preferences__custom">Custom</string>
<string name="preferences__advanced">Advanced</string>
<string name="preferences__app_protection">App protection</string>
<string name="preferences__mms_user_agent">MMS User Agent</string>
<string name="preferences__advanced_mms_access_point_names">Manual MMS settings</string>
<string name="preferences__enable_manual_mms">Use manual MMS settings</string>
<string name="preferences__override_system_mms_settings">Override system MMS settings with the information below.</string>

@ -33,4 +33,10 @@
android:title="@string/preferences__mmsc_password"
android:inputType="textVisiblePassword"/>
</PreferenceScreen>
<org.thoughtcrime.securesms.components.CustomDefaultPreference
app:custom_pref_toggle="pref_custom_mms_user_agent"
android:key="pref_mms_user_agent"
android:title="@string/preferences__mms_user_agent"
android:inputType="textNoSuggestions"/>
</PreferenceScreen>

@ -28,4 +28,4 @@
<Preference android:key="pref_mms_preferences"
android:title="@string/preferences__advanced_mms_access_point_names"/>
</PreferenceScreen>
</PreferenceScreen>

@ -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)

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

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

Loading…
Cancel
Save