Add proxy port option to local APN settings.

master
Moxie Marlinspike 2013-01-05 15:48:29 -08:00
parent 5f16da8fca
commit ead97953e8
4 changed files with 40 additions and 36 deletions

View File

@ -374,7 +374,8 @@
<string name="preferences__enable_local_apns">Enable local APNs</string>
<string name="preferences__use_apn_information_configured_here_when_system_apn_information_is_unavailable">Use APN information configured here when system APN information is unavailable.</string>
<string name="preferences__mmsc_url_required">MMSC URL (Required)</string>
<string name="preferences__mms_proxy_optional">MMS Proxy (Optional)</string>
<string name="preferences__mms_proxy_host_optional">MMS Proxy Host (Optional)</string>
<string name="preferences__mms_proxy_port_optional">MMS Proxy Port (Optional)</string>
<!-- **************************************** -->

View File

@ -152,8 +152,13 @@
android:dependency="pref_use_local_apns" />
<EditTextPreference android:key="pref_apn_mms_proxy"
android:title="@string/preferences__mms_proxy_optional"
android:title="@string/preferences__mms_proxy_host_optional"
android:dependency="pref_use_local_apns" />
<EditTextPreference android:key="pref_apn_mms_proxy_port"
android:title="@string/preferences__mms_proxy_port_optional"
android:dependency="pref_use_local_apns"
android:inputType="number" />
</PreferenceCategory>
</PreferenceScreen>

View File

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

View File

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