VcfShare.kt
34 lignes · 1128 octets
package fr.ebii.card2vcf.contact import android.content.Context import android.content.Intent import androidx.core.content.FileProvider import java.io.File object VcfShare { fun fileName(card: ContactCard): String { val base = card.displayName().ifBlank { "contact" } .lowercase() .replace(Regex("[^a-z0-9]+"), "-") .trim('-') .ifBlank { "contact" } return "$base.vcf" } fun writeTempFile(context: Context, card: ContactCard): File { val dir = File(context.cacheDir, "vcf").apply { mkdirs() } val file = File(dir, fileName(card)) file.writeText(VCardSerializer.toVCard3(card)) return file } fun shareIntent(context: Context, card: ContactCard): Intent { val file = writeTempFile(context, card) val uri = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", file) return Intent(Intent.ACTION_SEND).apply { type = "text/vcard" putExtra(Intent.EXTRA_STREAM, uri) addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) } } }
GitRust