diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2015-02-14 08:36:06 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2015-02-14 08:36:06 +0100 |
| commit | 75e2330c4496730e912222a4e015a41ce9d4ad3b (patch) | |
| tree | 86255d83809ad5704d9198a8ec4a6368b7fa7371 | |
| parent | 0b77441d721dbd444c0a4675978fecf753ad79f6 (diff) | |
| download | cgeo-75e2330c4496730e912222a4e015a41ce9d4ad3b.zip cgeo-75e2330c4496730e912222a4e015a41ce9d4ad3b.tar.gz cgeo-75e2330c4496730e912222a4e015a41ce9d4ad3b.tar.bz2 | |
#4670: register for extremcaching.com URLs
6 files changed, 63 insertions, 1 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index ba27d06..25909d0 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -406,8 +406,35 @@ android:pathPrefix="/viewcache.php" android:scheme="http" /> </intent-filter> + + <!-- extremcaching.com related URLs --> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + <action android:name="android.nfc.action.NDEF_DISCOVERED" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:host="extremcaching.com" + android:pathPrefix="/index.php/output-2/" + android:scheme="http" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + <action android:name="android.nfc.action.NDEF_DISCOVERED" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data + android:host="www.extremcaching.com" + android:pathPrefix="/index.php/output-2/" + android:scheme="http" /> + </intent-filter> + </activity> - + <activity android:name="cgeo.geocaching.TrackableActivity" android:configChanges="keyboardHidden|orientation|screenSize" diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index b48fc58..da3100c 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -207,6 +207,10 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc geocode = MapsWithMeCacheListApp.getCacheFromMapsWithMe(this, getIntent()); } + if (geocode == null && uri != null) { + geocode = ConnectorFactory.getGeocodeFromURL(uri.toString()); + } + // try to get data from URI if (geocode == null && guid == null && uri != null) { final String uriHost = uri.getHost().toLowerCase(Locale.US); diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java index 15c2dc2..68dbee7 100644 --- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java +++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java @@ -234,4 +234,14 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode, return R.string.pref_ecpassword; } + @Override + @Nullable + public String getGeocodeFromUrl(@NonNull final String url) { + final String geocode = "EC" + StringUtils.substringAfter(url, "extremcaching.com/index.php/output-2/"); + if (canHandle(geocode)) { + return geocode; + } + return super.getGeocodeFromUrl(url); + } + } diff --git a/main/src/cgeo/geocaching/connector/ox/OXConnector.java b/main/src/cgeo/geocaching/connector/ox/OXConnector.java index 41035d1..d1db301 100644 --- a/main/src/cgeo/geocaching/connector/ox/OXConnector.java +++ b/main/src/cgeo/geocaching/connector/ox/OXConnector.java @@ -14,6 +14,7 @@ import cgeo.geocaching.location.Viewport; import cgeo.geocaching.settings.Settings; import cgeo.geocaching.utils.CancellableHandler; +import org.apache.commons.lang3.StringUtils; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; @@ -109,4 +110,14 @@ public class OXConnector extends AbstractConnector implements ISearchByCenter, I } return new SearchResult(caches); } + + @Override + @Nullable + public String getGeocodeFromUrl(@NonNull final String url) { + final String geocode = StringUtils.substringAfter(url, "http://www.opencaching.com/de/#!geocache/"); + if (canHandle(geocode)) { + return geocode; + } + return super.getGeocodeFromUrl(url); + } } diff --git a/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java b/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java index aa6a185..f4073a9 100644 --- a/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java +++ b/tests/src/cgeo/geocaching/connector/ec/ECConnectorTest.java @@ -32,4 +32,8 @@ public class ECConnectorTest extends TestCase { return geocache; } + public static void testGetGeocodeFromUrl() throws Exception { + assertThat(ECConnector.getInstance().getGeocodeFromUrl("http://extremcaching.com/index.php/output-2/738")).isEqualTo("EC738"); + } + } diff --git a/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java b/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java index 5433387..11f2d66 100644 --- a/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java +++ b/tests/src/cgeo/geocaching/connector/ox/OXConnectorTest.java @@ -14,4 +14,10 @@ public class OXConnectorTest extends TestCase { assertThat(oxConnector.canHandle("OX_")).isFalse(); } + public static void testGetGeocodeFromUrl() { + final OXConnector connector = new OXConnector(); + assertThat(connector.getGeocodeFromUrl("http://www.opencaching.com/de/#!geocache/OX1R421")).isEqualTo("OX1R421"); + assertThat(connector.getGeocodeFromUrl("http://www.opencaching.com/#!geocache/OX1R421")).isEqualTo("OX1R421"); + } + } |
