From a01edcc9e8e2bbe016272459c8f793dd3a630fad Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Mon, 27 Nov 2023 22:58:24 +0100 Subject: [PATCH] Bugfix: InputStream.transferTo() is only available from SDK33+. Introcuced in 8b7063d18bfeaf81baecbd10760fe552da28ca2d. --- .../opentracks/io/file/importer/KmzTrackImporter.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java index 37265b735..51be5def1 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java @@ -18,6 +18,7 @@ package de.dennisguse.opentracks.io.file.importer; import android.content.Context; import android.net.Uri; +import android.os.Build; import android.util.Log; import androidx.annotation.NonNull; @@ -237,7 +238,15 @@ public class KmzTrackImporter { File file = new File(dir, fileName); try (FileOutputStream fileOutputStream = new FileOutputStream(file)) { - zipInputStream.transferTo(fileOutputStream); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + zipInputStream.transferTo(fileOutputStream); + } else { + byte[] buffer = new byte[4096]; + int count; + while ((count = zipInputStream.read(buffer)) != -1) { + fileOutputStream.write(buffer, 0, count); + } + } } } }