diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java index 8f4578a69..dd912fec3 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java @@ -56,7 +56,7 @@ import de.dennisguse.opentracks.util.FileUtils; * So, for this check actually a different file name might be used than in the ExportService. * * Saved state as an object instead of individual values. */ -public class ExportActivity extends FragmentActivity implements ExportServiceResultReceiver.Receiver { +public class ExportActivity extends FragmentActivity implements ExportService.ExportServiceResultReceiver.Receiver { private static final String TAG = ExportActivity.class.getSimpleName(); @@ -84,7 +84,7 @@ public class ExportActivity extends FragmentActivity implements ExportServiceRes private TrackFileFormat trackFileFormat; private Uri directoryUri; - private ExportServiceResultReceiver resultReceiver; + private ExportService.ExportServiceResultReceiver resultReceiver; private List directoryFiles; @@ -161,7 +161,7 @@ public class ExportActivity extends FragmentActivity implements ExportServiceRes DocumentFile documentFile = DocumentFile.fromTreeUri(this, directoryUri); String directoryDisplayName = FileUtils.getPath(documentFile); - resultReceiver = new ExportServiceResultReceiver(new Handler(), this); + resultReceiver = new ExportService.ExportServiceResultReceiver(new Handler(), this); if (savedInstanceState == null) { autoConflict = ConflictResolutionStrategy.CONFLICT_NONE; diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportService.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportService.java index 04c5bc44c..b97e6e1bf 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportService.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportService.java @@ -5,6 +5,7 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; +import android.os.Handler; import android.os.ResultReceiver; import android.util.Log; @@ -57,4 +58,41 @@ public class ExportService extends JobIntentService { int resultCode = success ? ExportServiceResultReceiver.RESULT_CODE_SUCCESS : ExportServiceResultReceiver.RESULT_CODE_ERROR; resultReceiver.send(resultCode, bundle); } + + /** + * Create a new ResultReceive to receive results. + * Your {@link #onReceiveResult} method will be called from the thread running handler if given, or from an arbitrary thread if null. + */ + public static class ExportServiceResultReceiver extends ResultReceiver { + + public static final int RESULT_CODE_SUCCESS = 1; + public static final int RESULT_CODE_ERROR = 0; + + public static final String RESULT_EXTRA_EXPORT_TASK = "result_extra_export_task"; + + private final Receiver receiver; + + public ExportServiceResultReceiver(Handler handler, @NonNull Receiver receiver) { + super(handler); + this.receiver = receiver; + } + + @Override + protected void onReceiveResult(int resultCode, Bundle resultData) { + ExportTask exportTask = resultData.getParcelable(ExportServiceResultReceiver.RESULT_EXTRA_EXPORT_TASK); + switch (resultCode) { + case RESULT_CODE_SUCCESS -> receiver.onExportSuccess(exportTask); + case RESULT_CODE_ERROR -> receiver.onExportError(exportTask); + default -> throw new RuntimeException("Unknown resultCode."); + } + } + + public interface Receiver { + default void onExportSuccess(ExportTask exportTask) { + } + + default void onExportError(ExportTask exportTask) { + } + } + } } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportServiceResultReceiver.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportServiceResultReceiver.java deleted file mode 100644 index acea96baf..000000000 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportServiceResultReceiver.java +++ /dev/null @@ -1,44 +0,0 @@ -package de.dennisguse.opentracks.io.file.exporter; - -import android.os.Bundle; -import android.os.Handler; -import android.os.ResultReceiver; - -import androidx.annotation.NonNull; - -/** - * Create a new ResultReceive to receive results. - * Your {@link #onReceiveResult} method will be called from the thread running handler if given, or from an arbitrary thread if null. - */ -public class ExportServiceResultReceiver extends ResultReceiver { - - public static final int RESULT_CODE_SUCCESS = 1; - public static final int RESULT_CODE_ERROR = 0; - - public static final String RESULT_EXTRA_EXPORT_TASK = "result_extra_export_task"; - - private final Receiver receiver; - - public ExportServiceResultReceiver(Handler handler, @NonNull Receiver receiver) { - super(handler); - this.receiver = receiver; - } - - @Override - protected void onReceiveResult(int resultCode, Bundle resultData) { - ExportTask exportTask = resultData.getParcelable(ExportServiceResultReceiver.RESULT_EXTRA_EXPORT_TASK); - switch (resultCode) { - case RESULT_CODE_SUCCESS -> receiver.onExportSuccess(exportTask); - case RESULT_CODE_ERROR -> receiver.onExportError(exportTask); - default -> throw new RuntimeException("Unknown resultCode."); - } - } - - public interface Receiver { - default void onExportSuccess(ExportTask exportTask) { - } - - default void onExportError(ExportTask exportTask) { - } - } -} diff --git a/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java b/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java index 3f65832aa..e69983c46 100644 --- a/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/ExportUtils.java @@ -25,7 +25,7 @@ import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.io.file.TrackFileFormat; import de.dennisguse.opentracks.io.file.TrackFilenameGenerator; import de.dennisguse.opentracks.io.file.exporter.ExportService; -import de.dennisguse.opentracks.io.file.exporter.ExportServiceResultReceiver; +import de.dennisguse.opentracks.io.file.exporter.ExportService.ExportServiceResultReceiver; import de.dennisguse.opentracks.io.file.exporter.ExportTask; import de.dennisguse.opentracks.io.file.exporter.TrackExporter; import de.dennisguse.opentracks.settings.PreferencesUtils;