Почему не отрисовывается изображение?

Скачиваю изображения через WorkManager и возвращаю пути до них в директории, проблема в том, что не отрисовывается изображение, хотя метод вызывается, и я получаю логи элементов списка. Вот код:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        val downloadRequest = OneTimeWorkRequestBuilder<DownloadWorker>()
            .setConstraints(
                Constraints.Builder()
                    .setRequiredNetworkType(
                        NetworkType.CONNECTED
                    )
                    .build()
            )
            .build()
        val workManager = WorkManager.getInstance(applicationContext)
        setContent {
            MyApplicationTheme {
                // A surface container using the 'background' color from the theme
                Surface(color = MaterialTheme.colors.background) {
                   val navcontroller = rememberNavController()
                    val workInfos = workManager
                        .getWorkInfosForUniqueWorkLiveData("download")
                        .observeAsState()
                        .value
                    val downloadInfo = remember(key1 = workInfos) {
                        workInfos?.find { it.id == downloadRequest.id }
                    }
                        val downloadUri = downloadInfo?.outputData?.getStringArray(WorkerKeys.IMAGE_URI)
                            ?.toList()
                    NavHost
                    if (!(downloadInfo?.state?.name == "SUCCEEDED")) {
                        CircularProgressIndicator()
                    }else{
                        maket(
                            downloadUri, workManager = workManager,
                            downloadInfo = downloadInfo, downloadRequest = downloadRequest
                        )
                    }
                    workManager
                        .beginUniqueWork(
                            "download",
                            ExistingWorkPolicy.KEEP,
                            downloadRequest
                        )
                        //.then(colorFilterRequest)
                        .enqueue()

                }

            }
        }

        }



    @Composable
    fun maket(liveData: List<String>? = null, workManager : WorkManager,
    downloadInfo : WorkInfo?, downloadRequest : OneTimeWorkRequest){
        LazyColumn(
            modifier = Modifier.fillMaxSize(),
        ) {
            //list?.let { list ->
            //if (liveData != null) {
                items(liveData!!) {
                    // Log.d("fsf", it)
                    Row(modifier = Modifier.fillMaxSize()) {
                       //liveData?.let {
                           Image(
                               painter = rememberImagePainter(
                                   data = it.toUri()//imageUri
                               ),
                               contentDescription = null
                           )
                           Log.d("fsfds", it.toString())
                           Image(
                               painter = rememberImagePainter(data = it.toUri()),
                               contentDescription = null
                           )
                       }
                 //   }

                }


          //  }

                //}
              }
            }

А вот workManager:

class DownloadWorker(
    private val context: Context,
    private val workerParams: WorkerParameters
) : CoroutineWorker(context, workerParams) {
    private suspend fun startForegroundService() {

            ForegroundInfo(
                Random().nextInt(),
                NotificationCompat.Builder(context, "download_channel")
                    .setSmallIcon(R.drawable.ic_launcher_background)
                    .setContentText("Downloading...")
                    .setContentTitle("Download in progress")
                    //.setChannelId("download_channel")
                    .build()
            )


    }
    override suspend fun doWork(): Result {
        var response : retrofit2.Response<List<String>>
        //if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            startForegroundService()
       // }
        //ResuldDownload.Success
        delay(5000L)
        return withContext(Dispatchers.IO) {
            var id = 0
            val ListImageUri = mutableListOf<String>()
            var ListUrl = listOf<String>()
            Log.d("dfgfd", ListUrl.toString())
            response = ImageApi.instance.downloadImageUrl()
            Log.d("gdfgfd", response.code().toString())
            response.body()?.let {
                ListUrl = it
                Log.d("dfgfd", ListUrl.toString())
            }
            for (i in ListUrl) {
                id++
                var responseImage : retrofit2.Response<ResponseBody>
                try {
                    responseImage = ImageApi.instance.downloadImages(i)
                }catch (e : ConnectException){
                    continue
                }
                  //  delay(2000L)
                //Log.d("sfsd", "sdfsd")
                if (!responseImage.code().toString().startsWith("4")
                    && !responseImage.code().toString().startsWith("5")) {
                    Log.d("sdfsdf", responseImage.code().toString())
                    val file = File(context.cacheDir, "image$id.jpg")
                    val outputStream = FileOutputStream(file)
                    outputStream.use { stream ->
                        try {
                            stream.write(responseImage.body()?.bytes())
                            Log.d("fsfsd", stream.toString())
                        } catch (e: IOException) {
                            return@withContext Result.failure(
                                workDataOf(
                                    WorkerKeys.ERROR_MSG to e.localizedMessage
                                )
                            )
                        }
                    }
                    ListImageUri.add(file.toURI().toString())
                    WorkerKeys.LIST_URI = ListImageUri.toTypedArray()
                }
            }
           // WorkerKeys.ISDOWNLOAD = false
            Result.success(
                workDataOf(WorkerKeys.IMAGE_URI to WorkerKeys.LIST_URI)
                //workDataOf(
                    //WorkerKeys.IMAGE_URI to WorkerKeys.LIST_URI)

                )


        }
        if(!response.isSuccessful) {
            if(response.code().toString().startsWith("5")) {
                return Result.retry()
            }
            return Result.failure(
                workDataOf(
                    WorkerKeys.ERROR_MSG to "Network error"
                )
            )
        }
        return Result.failure(
            workDataOf(WorkerKeys.ERROR_MSG to "Unknown error")
        )


    }
}

Ответы (1 шт):

Автор решения: Lnight

У меня была подобная проблема. Я получал данные с api, и у меня никак не отрисовывались картинки. После проведенных исследований я увидел, что url картинок был с http протоколом (пример: http://forkify-api.herokuapp.com/images/best_pizza_dough_recipe1b20.jpg). Мне пришлось прописать это в своём application в манифесте чтоб разрешить соединение через http:

android:usesCleartextTraffic="true"

P.S. Не судите строго если ответ будет неправильным. Я новичок, но хотел помочь.

→ Ссылка