aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/Settings.java14
-rw-r--r--main/src/cgeo/geocaching/SettingsActivity.java12
-rw-r--r--main/src/cgeo/geocaching/network/Network.java15
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);
+ }
}
/**