Pith - kiln
kiln/app/src/main/java/com/vgmlr/kiln/KilnShare.kt [1.4 kb]
Modified: 20:13:54 158 026 (24 Aug 026)
5 Days Ago
package com.vgmlr.kiln

import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.net.Uri
import androidx.compose.ui.graphics.ImageBitmap
import androidx.compose.ui.graphics.asAndroidBitmap
import androidx.core.content.FileProvider
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.io.File

object KilnShare {
    private const val MIME = "image/png"
    private const val DIR = "shares"
    private const val NAME = "kiln.png"
    private const val AUTHORITY = ".share"

    suspend fun send(context: Context, image: ImageBitmap) {
        val uri = withContext(Dispatchers.IO) { write(context, image.asAndroidBitmap()) } ?: return
        context.startActivity(
            Intent.createChooser(
                Intent(Intent.ACTION_SEND).apply {
                    type = MIME
                    putExtra(Intent.EXTRA_STREAM, uri)
                    addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
                },
                null
            )
        )
    }

    private fun write(context: Context, bitmap: Bitmap): Uri? = runCatching {
        val out = bitmap.copy(Bitmap.Config.ARGB_8888, false) ?: bitmap
        val file = File(File(context.cacheDir, DIR).apply { mkdirs() }, NAME)
        file.outputStream().use { out.compress(Bitmap.CompressFormat.PNG, 100, it) }
        FileProvider.getUriForFile(context, context.packageName + AUTHORITY, file)
    }.getOrNull()
}
Updates
Stave - Android 158.026
Kerf - Android 157.026
Kiln - Android 157.026
Wedge - Android 156.026
Whittle - Linux 155.026

Menu
Calendar
Project Tin (024/029)
Miter
RSS Feed
User Avatar
@vgmlr
=SUM(parts)
0.0026
260,214 (+628)