From 562bd197bb6debdbfe70500b9c03d6c8b9b6c00c Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 20 Jul 2023 01:06:15 +0300 Subject: [PATCH] android: removing tmp file when needed (#2729) Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- .../java/chat/simplex/app/views/helpers/GetImageView.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt index c7c8154900..2516bd7f82 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/views/helpers/GetImageView.kt @@ -2,6 +2,7 @@ package chat.simplex.app.views.helpers import android.Manifest import android.app.Activity +import android.app.Application import android.content.* import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager @@ -30,6 +31,7 @@ import androidx.core.content.ContextCompat import androidx.core.content.FileProvider import chat.simplex.app.* import chat.simplex.app.R +import chat.simplex.app.model.ChatModel import chat.simplex.app.model.json import chat.simplex.app.views.chat.PickFromGallery import chat.simplex.app.views.newchat.ActionButton @@ -112,9 +114,11 @@ fun base64ToBitmap(base64ImageString: String): Bitmap { class CustomTakePicturePreview(var uri: Uri?, var tmpFile: File?): ActivityResultContract() { @CallSuper override fun createIntent(context: Context, input: Void?): Intent { - tmpFile = File.createTempFile("image", ".bmp", File(getAppFilesDirectory())) + val tmpDir = SimplexApp.context.getDir("temp", Application.MODE_PRIVATE) + tmpFile = File.createTempFile("image", ".bmp", tmpDir) // Since the class should return Uri, the file should be deleted somewhere else. And in order to be sure, delegate this to system tmpFile?.deleteOnExit() + ChatModel.filesToDelete.add(tmpFile!!) uri = FileProvider.getUriForFile(context, "${BuildConfig.APPLICATION_ID}.provider", tmpFile!!) return Intent(MediaStore.ACTION_IMAGE_CAPTURE) .putExtra(MediaStore.EXTRA_OUTPUT, uri)