diff options
| author | Marco Jacob <mjacob@union06.de> | 2012-10-15 21:47:17 +0200 |
|---|---|---|
| committer | Marco Jacob <mjacob@union06.de> | 2012-10-15 21:47:17 +0200 |
| commit | 0581e2ff72503a85a4966a10d8bc3c1816966fad (patch) | |
| tree | 66790268de43eb7a230227f77f8f534f575fe4c7 /main | |
| parent | d33c1a01502ce6cb3737d1a88bf0ccd174213ac7 (diff) | |
| download | cgeo-0581e2ff72503a85a4966a10d8bc3c1816966fad.zip cgeo-0581e2ff72503a85a4966a10d8bc3c1816966fad.tar.gz cgeo-0581e2ff72503a85a4966a10d8bc3c1816966fad.tar.bz2 | |
fixes #1843 - settings for using native user agent instead
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/layout/init.xml | 22 | ||||
| -rw-r--r-- | main/res/values-de/strings.xml | 1 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 1 | ||||
| -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 |
6 files changed, 62 insertions, 3 deletions
diff --git a/main/res/layout/init.xml b/main/res/layout/init.xml index f149ce4..d0617fe 100644 --- a/main/res/layout/init.xml +++ b/main/res/layout/init.xml @@ -623,7 +623,27 @@ android:textColor="?text_color" android:text="@string/init_plain_logs" /> </LinearLayout> - </LinearLayout> + <LinearLayout + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" > + <CheckBox android:id="@+id/use_native_ua" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="left" + android:padding="1px" + android:gravity="center" /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center_vertical" + android:gravity="left" + android:paddingRight="3dip" + android:textSize="14dip" + android:textColor="?text_color" + android:text="@string/init_use_native_ua" /> + </LinearLayout> + </LinearLayout> <!-- ** --> <RelativeLayout style="@style/separator_horizontal_layout" > <View style="@style/separator_horizontal" /> diff --git a/main/res/values-de/strings.xml b/main/res/values-de/strings.xml index fc0e7b8..a1d3577 100644 --- a/main/res/values-de/strings.xml +++ b/main/res/values-de/strings.xml @@ -456,6 +456,7 @@ <string name="init_dbmove_success">Die Datenbank wurde erfolgreich verschoben.</string> <string name="init_dbmove_failed">Fehler beim Verschieben der Datenbank.</string> <string name="init_plain_logs">Logeinträge ohne Farben anzeigen</string> + <string name="init_use_native_ua">Android UserAgent verwenden</string> <!-- map sources --> <string name="map_source_google_map">Google: Karte</string> diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 51e58d6..521d2ad 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -457,6 +457,7 @@ <string name="init_dbmove_success">Successfully moved the database.</string> <string name="init_dbmove_failed">Failed to move database</string> <string name="init_plain_logs">Display log entries without colors</string> + <string name="init_use_native_ua">Use Android UserAgent</string> <!-- map sources --> <string-array name="map_sources"> 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..dbffdc3 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.PC_USER_AGENT); + } else { + request.getParams().setParameter(CoreProtocolPNames.USER_AGENT, Network.NATIVE_USER_AGENT); + } } /** |
