diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/Settings.java | 14 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/SettingsActivity.java | 12 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/network/Network.java | 15 |
3 files changed, 39 insertions, 2 deletions
diff --git a/main/src/cgeo/geocaching/Settings.java b/main/src/cgeo/geocaching/Settings.java index 74614c4..b4fc94b 100644 --- a/main/src/cgeo/geocaching/Settings.java +++ b/main/src/cgeo/geocaching/Settings.java @@ -98,6 +98,7 @@ public final class Settings { private static final String KEY_GPX_EXPORT_DIR = "gpxExportDir"; private static final String KEY_GPX_IMPORT_DIR = "gpxImportDir"; private static final String KEY_PLAIN_LOGS = "plainLogs"; + private static final String KEY_NATIVE_UA = "nativeUa"; private final static int unitsMetric = 1; @@ -1226,4 +1227,17 @@ public final class Settings { }); } + public static boolean getUseNativeUa() { + return sharedPrefs.getBoolean(KEY_NATIVE_UA, false); + } + + public static void setUseNativeUa(final boolean useNativeUa) { + editSharedSettings(new PrefRunnable() { + + @Override + public void edit(Editor edit) { + edit.putBoolean(KEY_NATIVE_UA, useNativeUa); + } + }); + } } diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java index defb138..b0870a4 100644 --- a/main/src/cgeo/geocaching/SettingsActivity.java +++ b/main/src/cgeo/geocaching/SettingsActivity.java @@ -527,6 +527,18 @@ public class SettingsActivity extends AbstractActivity { } }); + // Workaround for cspire customers on mobile connections #1843 + final CheckBox useNativeUserAgent = (CheckBox) findViewById(R.id.use_native_ua); + useNativeUserAgent.setChecked(Settings.getUseNativeUa()); + useNativeUserAgent.setOnClickListener(new View.OnClickListener() { + + @Override + public void onClick(View v) { + Settings.setUseNativeUa(!Settings.getUseNativeUa()); + useNativeUserAgent.setChecked(Settings.getUseNativeUa()); + } + }); + // Altitude settings EditText altitudeEdit = (EditText) findViewById(R.id.altitude); altitudeEdit.setText(String.valueOf(Settings.getAltCorrection())); diff --git a/main/src/cgeo/geocaching/network/Network.java b/main/src/cgeo/geocaching/network/Network.java index 5911146..bd4b6f6 100644 --- a/main/src/cgeo/geocaching/network/Network.java +++ b/main/src/cgeo/geocaching/network/Network.java @@ -1,5 +1,7 @@ package cgeo.geocaching.network; +import cgeo.geocaching.Settings; +import cgeo.geocaching.cgeoapplication; import cgeo.geocaching.files.LocalStorage; import cgeo.geocaching.utils.BaseUtils; import cgeo.geocaching.utils.Log; @@ -32,11 +34,13 @@ import ch.boye.httpclientandroidlib.params.CoreProtocolPNames; import ch.boye.httpclientandroidlib.params.HttpParams; import ch.boye.httpclientandroidlib.protocol.HttpContext; import ch.boye.httpclientandroidlib.util.EntityUtils; + import org.apache.commons.lang3.StringUtils; import org.json.JSONException; import org.json.JSONObject; import android.net.Uri; +import android.webkit.WebView; import java.io.File; import java.io.IOException; @@ -47,7 +51,10 @@ public abstract class Network { private static final int NB_DOWNLOAD_RETRIES = 4; /** User agent id */ - private final static String USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"; + private final static String PC_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:9.0.1) Gecko/20100101 Firefox/9.0.1"; + /** Native user agent **/ + private final static String NATIVE_USER_AGENT = new WebView(cgeoapplication.getInstance()).getSettings().getUserAgentString(); + private static final String PATTERN_PASSWORD = "(?<=[\\?&])[Pp]ass(w(or)?d)?=[^&#$]+"; private final static HttpParams clientParams = new BasicHttpParams(); @@ -230,7 +237,11 @@ public abstract class Network { "X-Requested-With", "XMLHttpRequest")) { request.setHeader(header.getName(), header.getValue()); } - request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.USER_AGENT); + if (Settings.getUseNativeUa()) { + request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.NATIVE_USER_AGENT); + } else { + request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.PC_USER_AGENT); + } } /** |
