diff --git a/app/src/main/java/com/proculite/logmylocation/WriteToFile.java b/app/src/main/java/com/proculite/logmylocation/WriteToFile.java index fb1d4f9..f94abbb 100644 --- a/app/src/main/java/com/proculite/logmylocation/WriteToFile.java +++ b/app/src/main/java/com/proculite/logmylocation/WriteToFile.java @@ -1,6 +1,5 @@ package com.proculite.logmylocation; -import android.content.Context; import android.net.Uri; import android.os.ParcelFileDescriptor; import android.util.Log; @@ -9,30 +8,22 @@ import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; -import androidx.core.app.ActivityCompat; - -import java.io.ByteArrayInputStream; -import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; -import java.io.InputStream; import java.io.OutputStream; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Paths; +import java.util.function.Consumer; public class WriteToFile implements ActivityResultCallback { private final String TAG = WriteToFile.class.getName(); - private final InputStream fileContents; + private Consumer fileConsumer; private final AppCompatActivity activityCompat; + private final ActivityResultLauncher launcher; - public WriteToFile(AppCompatActivity activity, String fileName, String fileMimeType, InputStream fileContents) + public WriteToFile(AppCompatActivity activity, String fileMimeType) { - this.fileContents = fileContents; this.activityCompat = activity; - ActivityResultLauncher launcher = - activity.registerForActivityResult(new ActivityResultContracts.CreateDocument(fileMimeType), this); - launcher.launch(fileName); + this.launcher = activity.registerForActivityResult( + new ActivityResultContracts.CreateDocument(fileMimeType), this); } @Override @@ -52,9 +43,7 @@ public class WriteToFile implements ActivityResultCallback { return; } try (FileOutputStream fileOutputStream = new FileOutputStream(fileDescriptor.getFileDescriptor())) { - while (fileContents.available() > 0) { - fileOutputStream.write(fileContents.read()); - } + fileConsumer.accept(fileOutputStream); } } } catch (IOException e) { @@ -62,11 +51,8 @@ public class WriteToFile implements ActivityResultCallback { } } - public static WriteToFile WriteBytes(AppCompatActivity activity, String fileName, String fileMimeType, byte[] fileContents){ - return new WriteToFile(activity, fileName, fileMimeType, new ByteArrayInputStream(fileContents)); - } - - public static WriteToFile WriteString(AppCompatActivity activity, String fileName, String fileMimeType, String fileContents){ - return WriteBytes(activity, fileName, fileMimeType, fileContents.getBytes(StandardCharsets.UTF_8)); + public void write(String fileName, Consumer fileConsumer){ + this.fileConsumer = fileConsumer; + launcher.launch(fileName); } }