diff --git a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesFragment.java b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesFragment.java index 4e63ca97fc..5119ad33c2 100644 --- a/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesFragment.java +++ b/android/app/src/main/java/app/organicmaps/bookmarks/BookmarkCategoriesFragment.java @@ -2,6 +2,7 @@ package app.organicmaps.bookmarks; import android.app.Activity; import android.app.ProgressDialog; +import android.content.ClipData; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; @@ -53,7 +54,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment= Build.VERSION_CODES.M) intent.putExtra(DocumentsContract.EXTRA_EXCLUDE_SELF, true); - startActivityForResult(intent, REQ_CODE_IMPORT_DIRECTORY); + startActivityForResult(intent, REQ_CODE_IMPORT_FILES); } @Override @@ -291,30 +298,44 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment { AtomicInteger found = new AtomicInteger(0); - StorageUtils.listContentProviderFilesRecursively( - resolver, rootUri, uri -> { - if (BookmarkManager.INSTANCE.importBookmarksFile(resolver, uri, tempDir)) - found.incrementAndGet(); - }); + + ClipData clipData = data.getClipData(); + if (clipData != null) + { + // Multiple files were selected + for (int i = 0; i < clipData.getItemCount(); i++) + { + Uri uri = clipData.getItemAt(i).getUri(); + if (BookmarkManager.INSTANCE.importBookmarksFile(resolver, uri, tempDir)) + found.incrementAndGet(); + } + } + else + { + // A single file was selected + Uri uri = data.getData(); + if (uri != null && BookmarkManager.INSTANCE.importBookmarksFile(resolver, uri, tempDir)) + found.incrementAndGet(); + } + UiThread.run(() -> { if (dialog.isShowing()) dialog.dismiss();