【Kotlin/Android】クリップボードにコピーする方法!ClipboardManager

この記事からわかること

  • Android Studio/Kotlinテキストクリップボードコピーする方法
  • ClipboardManager使い方
  • コピーできるデータ種類

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

Kotlinでクリップボードにコピーする方法

KotlinでクリップボードにテキストなどをコピーするにはClipboardManagerクラスを使用します。ClipboardManagerクラスはgetSystemServiceメソッドの引数にContext.CLIPBOARD_SERVICEを渡すことで取得できます。

続いてClipDatanewPlainTextメソッドを使用してクリップボードにコピーするデータを生成します。第一引数にはクリップのラベルを指定し、第二引数に実際にコピーしたいテキストを渡します。そしてsetPrimaryClipメソッドに渡すことでクリップボードに保存されます。


val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("user id", "コピーしたいテキスト")
clipboardManager.setPrimaryClip(clipData)

コピーできるデータ型

クリップボードにコピーできるデータは文字列以外にも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
}

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index