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()) {