📋

Jetpack ComposeからClipboardを使う

2021/06/09に公開

AndroidのSystem Serviceが面倒を見る領域にコピペするのでContext経由でSystem Serviceにアクセスするわけだったけど
https://developer.android.com/guide/topics/text/copy-paste

Composeからも簡単にアクセスできそう
https://developer.android.com/reference/kotlin/androidx/compose/ui/platform/package-summary
ServiceManagerではAccesibilityとClipboardManagerのInterfaceがCompose向けに用意されていて簡易にアクセスできる。

これが

val clipboardManager = ContextCompat.getSystemService(
    LocalContext.current,
    ClipboardManager::class.java
)
val clip: ClipData = ClipData.newPlainText(
    "label",
    "copy text"
)
clipboardManager?.setPrimaryClip(clip)

こうじゃ

LocalClipboardManager.current.setText(AnnotatedString("copy text"))

もちろんLocalContextと同じくComposableのスコープ内で動作するのでonClickの中で直接呼び出し等はできない。

Discussion