diff --git a/android/MapsWithMeLite.Samsung/AndroidManifest.xml b/android/MapsWithMeLite.Samsung/AndroidManifest.xml index 8961dc81fb..d6562cdc54 100644 --- a/android/MapsWithMeLite.Samsung/AndroidManifest.xml +++ b/android/MapsWithMeLite.Samsung/AndroidManifest.xml @@ -37,6 +37,25 @@ + + + + + + + + + + + + + + + + + + diff --git a/android/MapsWithMePro/AndroidManifest.xml b/android/MapsWithMePro/AndroidManifest.xml index f3e90c4256..bb8c58e69e 100644 --- a/android/MapsWithMePro/AndroidManifest.xml +++ b/android/MapsWithMePro/AndroidManifest.xml @@ -40,24 +40,23 @@ - + - + - +--> diff --git a/android/jni/com/mapswithme/maps/DownloadResourcesActivity.cpp b/android/jni/com/mapswithme/maps/DownloadResourcesActivity.cpp index b2255c9211..9c6bf5924c 100644 --- a/android/jni/com/mapswithme/maps/DownloadResourcesActivity.cpp +++ b/android/jni/com/mapswithme/maps/DownloadResourcesActivity.cpp @@ -325,4 +325,11 @@ extern "C" { return g_framework->NativeFramework()->AddBookmarksFile(jni::ToNativeString(env, path)); } + + JNIEXPORT jboolean JNICALL + Java_com_mapswithme_maps_DownloadResourcesActivity_setViewPortByUrl( + JNIEnv * env, jobject thiz, jstring url) + { + return g_framework->SetViewportByUrl(jni::ToNativeString(env, url)); + } } diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index 2284e0a1c4..96c6d17cac 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -722,4 +722,12 @@ namespace android { return m_work.Storage().IsDownloadInProgress(); } + + bool Framework::SetViewportByUrl(string const & url) + { + //TODO this is weird hack, we should reconsider Android + // lifecycle handling design + m_doLoadState = false; + m_work.SetViewportByURL(url); + } } diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index 44040fc58d..87400a0d0c 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -142,6 +142,8 @@ namespace android ::Framework * NativeFramework(); bool IsDownloadingActive(); + + bool SetViewportByUrl(string const & ulr); }; } diff --git a/android/src/com/mapswithme/maps/DownloadResourcesActivity.java b/android/src/com/mapswithme/maps/DownloadResourcesActivity.java index 04bfee4106..813cb464bc 100644 --- a/android/src/com/mapswithme/maps/DownloadResourcesActivity.java +++ b/android/src/com/mapswithme/maps/DownloadResourcesActivity.java @@ -52,11 +52,13 @@ public class DownloadResourcesActivity extends Activity implements LocationServi private LocationService mLocationService = null; private Index mCountryIndex = null; - //TODO add geo processors - private IntentProcessor[] mIntentProcessors = {new KmzIntentProcessor(), - new Ge0IntentProcessor(), - new GeoIntentProcessor(), - new MapsWithMeIntentProcessor()}; + private IntentProcessor[] mIntentProcessors = {new GeoIntentProcessor(), + /* uncomment code below when add + * appropriate schemes support + * */ + //new Ge0IntentProcessor() + //new MapsWithMeIntentProcessor() + }; private void setDownloadMessage(int bytesToDownload) { @@ -349,9 +351,10 @@ public class DownloadResourcesActivity extends Activity implements LocationServi if (checkLiteProPackages(isPro)) return; - - dispatchIntent(); - + final boolean dispatched = dispatchIntent(); + if (!dispatched) { + parseIntentForKMZFile(); + } setContentView(R.layout.download_resources); @@ -370,18 +373,18 @@ public class DownloadResourcesActivity extends Activity implements LocationServi } } - private void dispatchIntent() { + private boolean dispatchIntent() { if (getIntent() != null) { final Intent intent = getIntent(); for (IntentProcessor ip : mIntentProcessors) { if (ip.isIntentSupported(intent)) { - Utils.toastShortcut(this, "Intent: " + intent.getData()); ip.processIntent(intent); + return true; } } } - + return false; } private String getExtensionFromMime(String mime) @@ -470,7 +473,7 @@ public class DownloadResourcesActivity extends Activity implements LocationServi if (tmpFile != null) tmpFile.delete(); - Toast.makeText(this, success ? R.string.load_kmz_successful : R.string.load_kmz_failed, Toast.LENGTH_LONG).show(); + Utils.toastShortcut(this, success ? R.string.load_kmz_successful : R.string.load_kmz_failed); } } } @@ -598,23 +601,6 @@ public class DownloadResourcesActivity extends Activity implements LocationServi { } - private class KmzIntentProcessor implements IntentProcessor { - - @Override - public boolean isIntentSupported(Intent intent) { - final String scheme = intent.getScheme(); - return "file".equals(scheme) || "http".equals(scheme); - } - - @Override - public boolean processIntent(Intent intent) { - // TODO temp impl - parseIntentForKMZFile(); - return true; - } - - } - private class GeoIntentProcessor implements IntentProcessor { @Override @@ -624,12 +610,12 @@ public class DownloadResourcesActivity extends Activity implements LocationServi @Override public boolean processIntent(Intent intent) { - // TODO Auto-generated method stub - Utils.toastShortcut(DownloadResourcesActivity.this, this.getClass().getSimpleName()); - return false; + final Uri data = intent.getData(); + return data != null ? setViewPortByUrl(data.toString()) : false; } } + @SuppressWarnings("unused") private class Ge0IntentProcessor implements IntentProcessor { @Override @@ -639,24 +625,22 @@ public class DownloadResourcesActivity extends Activity implements LocationServi @Override public boolean processIntent(Intent intent) { - // TODO Auto-generated method stub - Utils.toastShortcut(DownloadResourcesActivity.this, this.getClass().getSimpleName()); + // TODO add ge0 parsing return false; } } + @SuppressWarnings("unused") private class MapsWithMeIntentProcessor implements IntentProcessor { @Override public boolean isIntentSupported(Intent intent) { - // TODO Auto-generated method stub return "mapswithme".equals(intent.getScheme()); } @Override public boolean processIntent(Intent intent) { - // TODO Auto-generated method stub - Utils.toastShortcut(DownloadResourcesActivity.this, this.getClass().getSimpleName()); + // TODO add mapswithme parsing return false; } @@ -669,4 +653,6 @@ public class DownloadResourcesActivity extends Activity implements LocationServi private native Index findIndexByPos(double lat, double lon); private native void cancelCurrentFile(); private native boolean loadKMZFile(String path); + //===============S=C=H=E=M=E======================// + private native boolean setViewPortByUrl(String url); }