diff --git a/res/values/strings.xml b/res/values/strings.xml
index 034918a648..4b6381f2e2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -374,7 +374,8 @@
Enable local APNs
Use APN information configured here when system APN information is unavailable.
MMSC URL (Required)
- MMS Proxy (Optional)
+ MMS Proxy Host (Optional)
+ MMS Proxy Port (Optional)
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index a853df6857..b4fd3ad2fa 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -152,8 +152,13 @@
android:dependency="pref_use_local_apns" />
+
+
diff --git a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
index 7470d3e239..b63fb178f2 100644
--- a/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
+++ b/src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java
@@ -77,7 +77,8 @@ public class ApplicationPreferencesActivity extends SherlockPreferenceActivity {
public static final String USE_LOCAL_MMS_APNS_PREF = "pref_use_local_apns";
public static final String MMSC_HOST_PREF = "pref_apn_mmsc_host";
- public static final String MMSC_PROXY_PREF = "pref_apn_mms_proxy";
+ public static final String MMSC_PROXY_HOST_PREF = "pref_apn_mms_proxy";
+ public static final String MMSC_PROXY_PORT_PREF = "pref_apn_mms_proxy_port";
@Override
protected void onCreate(Bundle icicle) {
@@ -144,38 +145,31 @@ public class ApplicationPreferencesActivity extends SherlockPreferenceActivity {
return false;
}
-
+
+ private void initializeEditTextSummary(final EditTextPreference preference) {
+ if (preference.getText() == null) {
+ preference.setSummary("Not set");
+ } else {
+ preference.setSummary(preference.getText());
+ }
+
+ preference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference pref, Object newValue) {
+ preference.setSummary(newValue == null ? "Not set" : (String)newValue);
+ return true;
+ }
+ });
+ }
+
private void initializeEditTextSummaries() {
- final EditTextPreference mmscUrlPreference = (EditTextPreference)this.findPreference(MMSC_HOST_PREF);
- final EditTextPreference mmsProxyPreference = (EditTextPreference)this.findPreference(MMSC_PROXY_PREF);
-
- if (mmscUrlPreference.getText() == null) {
- mmscUrlPreference.setSummary("Not set");
- } else {
- mmscUrlPreference.setSummary(mmscUrlPreference.getText());
- }
-
- if (mmsProxyPreference.getText() == null) {
- mmsProxyPreference.setSummary("Not set");
- } else {
- mmsProxyPreference.setSummary(mmsProxyPreference.getText());
- }
-
- mmscUrlPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- mmscUrlPreference.setSummary(newValue == null ? "Not set" : (String)newValue);
- return true;
- }
- });
-
- mmsProxyPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
- @Override
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- mmsProxyPreference.setSummary(newValue == null ? "Not set" : (String)newValue);
- return true;
- }
- });
+ final EditTextPreference mmscUrlPreference = (EditTextPreference)this.findPreference(MMSC_HOST_PREF);
+ final EditTextPreference mmsProxyHostPreference = (EditTextPreference)this.findPreference(MMSC_PROXY_HOST_PREF);
+ final EditTextPreference mmsProxyPortPreference = (EditTextPreference)this.findPreference(MMSC_PROXY_PORT_PREF);
+
+ initializeEditTextSummary(mmscUrlPreference);
+ initializeEditTextSummary(mmsProxyHostPreference);
+ initializeEditTextSummary(mmsProxyPortPreference);
}
private void initializeIdentitySelection() {
diff --git a/src/org/thoughtcrime/securesms/mms/MmsCommunication.java b/src/org/thoughtcrime/securesms/mms/MmsCommunication.java
index 184042b3a2..d856af16dd 100644
--- a/src/org/thoughtcrime/securesms/mms/MmsCommunication.java
+++ b/src/org/thoughtcrime/securesms/mms/MmsCommunication.java
@@ -63,9 +63,10 @@ public class MmsCommunication {
if (mmsc == null || !mmsc.startsWith("http"))
throw new ApnUnavailableException("Malformed locally configured MMSC: " + mmsc);
- String proxy = preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_PREF, null);
+ String proxy = preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_HOST_PREF, null);
+ String port = preferences.getString(ApplicationPreferencesActivity.MMSC_PROXY_PORT_PREF, null);
- return new MmsConnectionParameters(mmsc, proxy, null);
+ return new MmsConnectionParameters(mmsc, proxy, port);
}
throw new ApnUnavailableException("No locally configured parameters available");
@@ -180,6 +181,9 @@ public class MmsCommunication {
}
public String getProxy() {
+ if (!hasProxy())
+ return null;
+
return proxy;
}