diff --git a/android/MapsWithMePro/AndroidManifest.xml b/android/MapsWithMePro/AndroidManifest.xml
index effd20b2b0..8de4324ee6 100644
--- a/android/MapsWithMePro/AndroidManifest.xml
+++ b/android/MapsWithMePro/AndroidManifest.xml
@@ -25,19 +25,52 @@
-
+ android:label="@string/app_name"
+ android:name="com.mapswithme.maps.MWMApplication">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
NativeFramework()->AddBookmarksFile(jni::ToNativeString(env, path));
+ }
}
diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
index 0be31223e7..6b2ad4adf9 100644
--- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
+++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
@@ -2,6 +2,9 @@
#include "../../../core/jni_helper.hpp"
+#include "../../../../../../../coding/zip_creator.hpp"
+
+
namespace
{
::Framework * frm() { return g_framework->NativeFramework(); }
@@ -83,5 +86,20 @@ extern "C"
{
BookmarkAndCategory const bac = frm()->GetBookmark(m2::PointD(px, py));
return jni::GetNewPoint(env, m2::PointI(bac.first, bac.second));
- }
+ }
+
+ JNIEXPORT jstring JNICALL
+ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_saveToKMZFile(
+ JNIEnv * env, jobject thiz, jint catID, jstring tmpPath)
+ {
+ BookmarkCategory * pCat = frm()->GetBmCategory(catID);
+ if (pCat)
+ {
+ string const name = pCat->GetName();
+ if (CreateZipFromPathDeflatedAndDefaultCompression(pCat->GetFileName(), jni::ToNativeString(env, tmpPath) + name + ".kmz"))
+ return jni::ToJavaString(env, name);
+ }
+
+ return 0;
+ }
}
diff --git a/android/res/layout/bookmarks_list.xml b/android/res/layout/bookmarks_list.xml
index e7e1b6dae9..045074fb3f 100644
--- a/android/res/layout/bookmarks_list.xml
+++ b/android/res/layout/bookmarks_list.xml
@@ -23,6 +23,13 @@
android:layout_height="wrap_content"
android:text="@string/bookmarks" />
+
+