【Kotlin/Android】クリップボードにコピーする方法!ClipboardManager
この記事からわかること
- Android Studio/Kotlinでテキストをクリップボードにコピーする方法
- ClipboardManagerの使い方
- コピーできるデータの種類
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- Android Studio:Flamingo
- Kotlin:1.8.20
Kotlinでクリップボードにコピーする方法
KotlinでクリップボードにテキストなどをコピーするにはClipboardManager
クラスを使用します。ClipboardManager
クラスはgetSystemService
メソッドの引数にContext.CLIPBOARD_SERVICE
を渡すことで取得できます。
続いてClipData
のnewPlainText
メソッドを使用してクリップボードにコピーするデータを生成します。第一引数にはクリップのラベルを指定し、第二引数に実際にコピーしたいテキストを渡します。そしてsetPrimaryClip
メソッドに渡すことでクリップボードに保存されます。
val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("user id", "コピーしたいテキスト")
clipboardManager.setPrimaryClip(clipData)
おすすめ記事:getSystemServiceメソッドとは?
コピーできるデータ型
クリップボードにコピーできるデータは文字列以外にもURLやIntent、HTMLなどがあるようです。
fun copyTextToClipboard(context: Context, text: String) {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("Copied Text", text)
clipboard.setPrimaryClip(clip)
}
fun copyUriToClipboard(context: Context, uri: Uri) {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newUri(context.contentResolver, "Copied URI", uri)
clipboard.setPrimaryClip(clip)
}
fun copyIntentToClipboard(context: Context, intent: Intent) {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newIntent("Copied Intent", intent)
clipboard.setPrimaryClip(clip)
}
fun copyHtmlTextToClipboard(context: Context, htmlText: String) {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newHtmlText("Copied HTML", htmlText, htmlText)
clipboard.setPrimaryClip(clip)
}
クリップボードから取得する
クリップボードにコピーしているデータを取得するには以下のようにprimaryClip
からデータを取得し、getItemAt
で取得することができます。
fun getTextFromClipboard(context: Context): String? {
val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = clipboard.primaryClip
if (clipData != null && clipData.itemCount > 0) {
return clipData.getItemAt(0).text.toString()
}
return null
}
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。