diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 4d08c38eb..e1f8f40c4 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -14,6 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License.
-->
@@ -24,6 +25,28 @@ limitations under the License.
android:smallScreens="true"
android:xlargeScreens="true" />
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -150,27 +195,4 @@ limitations under the License.
android:icon="@drawable/ic_logo_color_24dp"
android:label="@string/recording_service" />
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/ImportProgressDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/ImportProgressDialogFragment.java
index 575072e05..9f0dbf7cf 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/ImportProgressDialogFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/ImportProgressDialogFragment.java
@@ -44,7 +44,9 @@ import de.dennisguse.opentracks.util.FileUtils;
public class ImportProgressDialogFragment extends DialogFragment {
- private static final String EXTRA_DIRECTORY_URI_KEY = "directory_uri";
+ private static final String EXTRA_IS_TREE_KEY = "tree_uri";
+
+ private static final String EXTRA_DATA_URI_KEY = "data_uri";
private static final String TAG = ImportProgressDialogFragment.class.getSimpleName();
@@ -59,12 +61,10 @@ public class ImportProgressDialogFragment extends DialogFragment {
private int trackImportSuccessCount;
private int fileCount;
- /**
- * Create a new instance.
- */
- public static void showDialog(FragmentManager fragmentManager, Uri documentFileUri) {
+ public static void showDialog(FragmentManager fragmentManager, Uri documentFileUri, boolean isDirectory) {
Bundle bundle = new Bundle();
- bundle.putParcelable(EXTRA_DIRECTORY_URI_KEY, documentFileUri);
+ bundle.putParcelable(EXTRA_DATA_URI_KEY, documentFileUri);
+ bundle.putBoolean(EXTRA_IS_TREE_KEY, isDirectory);
ImportProgressDialogFragment dialogFragment = new ImportProgressDialogFragment();
dialogFragment.setArguments(bundle);
@@ -79,9 +79,13 @@ public class ImportProgressDialogFragment extends DialogFragment {
// This fragment uses a background thread, so it should not be recreated during activity re-creation.
setRetainInstance(true);
- Uri directoryUri = getArguments().getParcelable(EXTRA_DIRECTORY_URI_KEY);
- DocumentFile documentFile = DocumentFile.fromTreeUri(getContext(), directoryUri);
-
+ Uri directoryUri = getArguments().getParcelable(EXTRA_DATA_URI_KEY);
+ DocumentFile documentFile;
+ if (getArguments().getBoolean(EXTRA_IS_TREE_KEY)) {
+ documentFile = DocumentFile.fromTreeUri(getContext(), directoryUri);
+ } else {
+ documentFile = DocumentFile.fromSingleUri(getContext(), directoryUri);
+ }
directoryDisplayName = FileUtils.getPath(documentFile);
importThread = new ImportThread(documentFile);
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java
index d60b8175b..f1fca075c 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/DirectoryChooserActivity.java
@@ -33,7 +33,6 @@ public abstract class DirectoryChooserActivity extends AppCompatActivity {
if (resultCode == Activity.RESULT_OK) {
Uri directoryUri = resultData.getData();
-
startActivity(createIntent(directoryUri));
}
finish();
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java
index d5fab088b..4663845d2 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java
@@ -16,7 +16,6 @@
package de.dennisguse.opentracks.io.file.importer;
-import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
@@ -43,8 +42,12 @@ public class ImportActivity extends FragmentActivity implements ImportProgressDi
super.onCreate(savedInstanceState);
if (savedInstanceState == null || !savedInstanceState.getBoolean(BUNDLE_ACTIVITY_RECREATED, false)) {
- Uri directoryUri = getIntent().getParcelableExtra(EXTRA_DIRECTORY_URI_KEY);
- ImportProgressDialogFragment.showDialog(getSupportFragmentManager(), directoryUri);
+ if (getIntent().getData() != null) {
+ ImportProgressDialogFragment.showDialog(getSupportFragmentManager(), getIntent().getData(), false);
+ } else {
+ // Started from DirectoryChooserActivity
+ ImportProgressDialogFragment.showDialog(getSupportFragmentManager(), getIntent().getParcelableExtra(EXTRA_DIRECTORY_URI_KEY), true);
+ }
}
}
diff --git a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java
index 8399f00ee..e6d63e0b1 100644
--- a/src/main/java/de/dennisguse/opentracks/util/FileUtils.java
+++ b/src/main/java/de/dennisguse/opentracks/util/FileUtils.java
@@ -309,7 +309,10 @@ public class FileUtils {
public static ArrayList getFiles(DocumentFile file) {
ArrayList files = new ArrayList<>();
- if (!file.isDirectory()) return files;
+ if (!file.isDirectory()) {
+ files.add(file);
+ return files;
+ }
for (DocumentFile candidate : file.listFiles()) {
if (!candidate.isDirectory()) {