Skip to content

Commit 1b01fce

Browse files
committed
properly save the file in an uri, if it is provided by a third party intent
1 parent 5c2e2b8 commit 1b01fce

1 file changed

Lines changed: 9 additions & 19 deletions

File tree

app/src/main/kotlin/com/simplemobiletools/camera/PhotoProcessor.kt

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import android.media.ExifInterface
77
import android.net.Uri
88
import android.os.AsyncTask
99
import android.os.Environment
10-
import android.util.Log
1110
import com.simplemobiletools.camera.activities.MainActivity
1211
import com.simplemobiletools.camera.extensions.compensateDeviceRotation
1312
import com.simplemobiletools.camera.extensions.config
@@ -19,19 +18,9 @@ import com.simplemobiletools.commons.extensions.showErrorToast
1918
import com.simplemobiletools.commons.extensions.toast
2019
import java.io.File
2120
import java.io.FileOutputStream
22-
import java.io.IOException
2321
import java.io.OutputStream
24-
import java.lang.ref.WeakReference
2522

2623
class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId: Int, val deviceOrientation: Int) : AsyncTask<ByteArray, Void, String>() {
27-
companion object {
28-
private val TAG = PhotoProcessor::class.java.simpleName
29-
private var mActivity: WeakReference<MainActivity>? = null
30-
}
31-
32-
init {
33-
mActivity = WeakReference(activity)
34-
}
3524

3625
override fun doInBackground(vararg params: ByteArray): String {
3726
var fos: OutputStream? = null
@@ -59,7 +48,11 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId
5948
document = document?.createFile("", path.substring(path.lastIndexOf('/') + 1))
6049
fos = activity.contentResolver.openOutputStream(document?.uri)
6150
} else {
62-
fos = FileOutputStream(photoFile)
51+
fos = if (uri == null) {
52+
FileOutputStream(photoFile)
53+
} else {
54+
activity.contentResolver.openOutputStream(uri)
55+
}
6356
}
6457

6558
var image = BitmapFactory.decodeByteArray(data, 0, data.size)
@@ -79,13 +72,9 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId
7972
fos?.close()
8073
return photoFile.absolutePath
8174
} catch (e: Exception) {
82-
Log.e(TAG, "PhotoProcessor file not found: $e")
75+
activity.showErrorToast(e)
8376
} finally {
84-
try {
85-
fos?.close()
86-
} catch (e: IOException) {
87-
Log.e(TAG, "PhotoProcessor close ioexception $e")
88-
}
77+
fos?.close()
8978
}
9079

9180
return ""
@@ -100,6 +89,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId
10089

10190
val matrix = Matrix()
10291
matrix.setRotate(degree.toFloat())
92+
10393
try {
10494
return Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true)
10595
} catch (e: OutOfMemoryError) {
@@ -110,7 +100,7 @@ class PhotoProcessor(val activity: MainActivity, val uri: Uri?, val currCameraId
110100

111101
override fun onPostExecute(path: String) {
112102
super.onPostExecute(path)
113-
mActivity?.get()?.mediaSaved(path)
103+
activity.mediaSaved(path)
114104
}
115105

116106
interface MediaSavedListener {

0 commit comments

Comments
 (0)