16
16
17
17
package com.example.background.workers
18
18
19
+ import android.content.ContentResolver
19
20
import android.content.Context
20
21
import android.graphics.BitmapFactory
21
22
import android.net.Uri
22
23
import android.provider.MediaStore
24
+ import android.provider.MediaStore.Images.Media
23
25
import android.util.Log
24
26
import androidx.work.Data
25
27
import androidx.work.Worker
@@ -38,17 +40,15 @@ class SaveImageToGalleryWorker(appContext: Context, workerParams: WorkerParamete
38
40
override fun doWork (): Result {
39
41
val resolver = applicationContext.contentResolver
40
42
return try {
41
- val resourceUri = Uri .parse(inputData.getString(Constants .KEY_IMAGE_URI ))
42
- val bitmap = BitmapFactory .decodeStream(resolver.openInputStream(resourceUri))
43
- val imageUrl = MediaStore .Images .Media .insertImage(
44
- resolver, bitmap, DATE_FORMATTER .format(Date ()), TITLE )
45
- if (imageUrl.isEmpty()) {
43
+ val input = Uri .parse(inputData.getString(Constants .KEY_IMAGE_URI ))
44
+ val imageLocation = insertImage(resolver, input)
45
+ if (imageLocation.isNullOrEmpty()) {
46
46
Log .e(TAG , " Writing to MediaStore failed" )
47
47
Result .failure()
48
48
}
49
49
// Set the result of the worker by calling setOutputData().
50
50
val output = Data .Builder ()
51
- .putString(Constants .KEY_IMAGE_URI , imageUrl )
51
+ .putString(Constants .KEY_IMAGE_URI , imageLocation )
52
52
.build()
53
53
Result .success(output)
54
54
} catch (exception: Exception ) {
@@ -57,6 +57,13 @@ class SaveImageToGalleryWorker(appContext: Context, workerParams: WorkerParamete
57
57
}
58
58
}
59
59
60
+ private fun insertImage (resolver : ContentResolver , resourceUri : Uri ): String? {
61
+ val bitmap = BitmapFactory .decodeStream(resolver.openInputStream(resourceUri))
62
+ return Media .insertImage(
63
+ resolver, bitmap, DATE_FORMATTER .format(Date ()), TITLE
64
+ )
65
+ }
66
+
60
67
companion object {
61
68
private const val TAG = " SvImageToGalleryWrkr"
62
69
private const val TITLE = " Filtered Image"
0 commit comments