diff options
| -rw-r--r-- | main/AndroidManifest.xml | 11 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CacheDetailActivity.java | 28 |
2 files changed, 27 insertions, 12 deletions
diff --git a/main/AndroidManifest.xml b/main/AndroidManifest.xml index ef0b781..2d01358 100644 --- a/main/AndroidManifest.xml +++ b/main/AndroidManifest.xml @@ -232,6 +232,17 @@ <category android:name="android.intent.category.BROWSABLE" /> <data + android:host="www.geocaching.com" + android:pathPrefix="/geocache/GC" + android:scheme="http" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data android:host="geocaching.com" android:pathPrefix="/seek/cache_details.aspx" android:scheme="http" /> diff --git a/main/src/cgeo/geocaching/CacheDetailActivity.java b/main/src/cgeo/geocaching/CacheDetailActivity.java index f43de4e..4a9cc6e 100644 --- a/main/src/cgeo/geocaching/CacheDetailActivity.java +++ b/main/src/cgeo/geocaching/CacheDetailActivity.java @@ -228,19 +228,23 @@ public class CacheDetailActivity extends AbstractViewPagerActivity<CacheDetailAc } if (uriHost.contains("geocaching.com")) { - geocode = uri.getQueryParameter("wp"); - guid = uri.getQueryParameter("guid"); - - if (StringUtils.isNotBlank(geocode)) { - geocode = geocode.toUpperCase(Locale.US); - guid = null; - } else if (StringUtils.isNotBlank(guid)) { - geocode = null; - guid = guid.toLowerCase(Locale.US); + if (StringUtils.startsWith(uriPath, "/geocache/gc")) { + geocode = StringUtils.substringBefore(uriPath.substring(10), "_").toUpperCase(Locale.US); } else { - showToast(res.getString(R.string.err_detail_open)); - finish(); - return; + geocode = uri.getQueryParameter("wp"); + guid = uri.getQueryParameter("guid"); + + if (StringUtils.isNotBlank(geocode)) { + geocode = geocode.toUpperCase(Locale.US); + guid = null; + } else if (StringUtils.isNotBlank(guid)) { + geocode = null; + guid = guid.toLowerCase(Locale.US); + } else { + showToast(res.getString(R.string.err_detail_open)); + finish(); + return; + } } } else if (uriHost.contains("coord.info")) { if (StringUtils.startsWith(uriPath, "/gc")) { |
