diff --git a/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java b/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java index 54255435e2..9b37031332 100644 --- a/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java +++ b/android/src/com/mapswithme/maps/DownloadResourcesLegacyActivity.java @@ -793,15 +793,20 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity else path = mData.getPath(); - if (path != null) + if (!TextUtils.isEmpty(path)) { LOGGER.d(TAG, "Loading bookmarks file from: " + path); - BookmarkManager.loadKmzFile(path, isTemporaryFile); + loadKmzFile(path, isTemporaryFile); } else LOGGER.w(TAG, "Can't get bookmarks file from URI: " + mData); } + private void loadKmzFile(final @NonNull String path, final boolean isTemporaryFile) + { + runOnUiThread(() -> BookmarkManager.INSTANCE.loadKmzFile(path, isTemporaryFile)); + } + private String getExtensionFromMime(String mime) { final int i = mime.lastIndexOf('.'); diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java index d0c12a8769..d661e181de 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarkCategoriesFragment.java @@ -47,6 +47,21 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment private BookmarkBackupController mBackupController; @Nullable private KmlImportController mKmlImportController; + @NonNull + private Runnable mImportKmlTask = new Runnable() + { + private boolean alreadyDone = false; + + @Override + public void run() + { + if (alreadyDone) + return; + + importKml(); + alreadyDone = true; + } + }; @Override protected @LayoutRes int getLayoutRes() @@ -157,8 +172,8 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment updateLoadingPlaceholder(); if (getAdapter() != null) getAdapter().notifyDataSetChanged(); - if (mKmlImportController != null) - mKmlImportController.importKml(); + if (!BookmarkManager.INSTANCE.isAsyncBookmarksLoadingInProgress()) + mImportKmlTask.run(); } @Override @@ -286,6 +301,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment updateResultsPlaceholder(); if (getAdapter() != null) getAdapter().notifyDataSetChanged(); + mImportKmlTask.run(); } @Override @@ -294,6 +310,12 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment // Do nothing here. } + private void importKml() + { + if (mKmlImportController != null) + mKmlImportController.importKml(); + } + @Override public void onPreparedFileForSharing(@NonNull BookmarkSharingResult result) { diff --git a/android/src/com/mapswithme/maps/bookmarks/KmlImportController.java b/android/src/com/mapswithme/maps/bookmarks/KmlImportController.java index 919c9262d5..b167bf4b20 100644 --- a/android/src/com/mapswithme/maps/bookmarks/KmlImportController.java +++ b/android/src/com/mapswithme/maps/bookmarks/KmlImportController.java @@ -18,7 +18,6 @@ public class KmlImportController implements BookmarkManager.KmlConversionListene private ProgressDialog mProgressDialog; @Nullable private final ImportKmlCallback mCallback; - private boolean mWasShown = false; KmlImportController(@NonNull Activity context, @Nullable ImportKmlCallback callback) { @@ -38,12 +37,6 @@ public class KmlImportController implements BookmarkManager.KmlConversionListene void importKml() { - if (mWasShown) - return; - - if (BookmarkManager.INSTANCE.isAsyncBookmarksLoadingInProgress()) - return; - int count = BookmarkManager.INSTANCE.getKmlFilesCountForConversion(); if (count == 0) return; @@ -58,7 +51,6 @@ public class KmlImportController implements BookmarkManager.KmlConversionListene String msg = mContext.getString(R.string.bookmarks_detect_message, count); DialogUtils.showAlertDialog(mContext, R.string.bookmarks_detect_title, msg, R.string.button_convert, clickListener, R.string.cancel); - mWasShown = true; } @Override diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java index db57af3123..9458b84479 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java @@ -329,7 +329,7 @@ public enum BookmarkManager return nativeGetLastSynchronizationTimestampInMs(); } - public static void loadKmzFile(@NonNull String path, boolean isTemporaryFile) + public void loadKmzFile(@NonNull String path, boolean isTemporaryFile) { nativeLoadKmzFile(path, isTemporaryFile); }