Android 复制文本到剪切板,及ClipboardManager相关操作

    技术2022-07-13  62

    文章目录

    1.复制内容要剪切板2.清除剪切板3.获取剪切板内容

    这个功能也是很常见了,一般都是为了方便用户操作,比如复制订单编号。 不废话,下面就来看看具体是怎么操作的。

    1.复制内容要剪切板

    tv_order_copy.setOnClickListener { //获取剪切板管理器 val cm: ClipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager //设置内容到剪切板 cm.primaryClip = ClipData.newPlainText(null, item.orderId) ToastUtils.show(context, "已复制") }

    非常简单,首先获取剪切板管理器,然后设置内容即可 可以设置的内容有3中类型:

    newPlainTextnewHtmlTextnewIntent

    2.清除剪切板

    tv_order_clear.setOnClickListener { val cm: ClipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { //要api28以上 cm.clearPrimaryClip() } else { cm.primaryClip = ClipData.newPlainText(null, null) } }

    在api等级28以上,直接调用clearPrimaryClip()即可,以下,重新设置为空即可。

    3.获取剪切板内容

    iv_order_get.setOnClickListener { val cm: ClipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager if (cm.hasPrimaryClip() && cm.primaryClip != null) { //cm.primaryClip.itemCount val text = cm.primaryClip.getItemAt(0).text ToastUtils.show(context, text.toString()) } }

    在有内容的情况下,这里的代码是取的第一个,即getItemAt(0).text,如果有多个的情况下,且有取多个的需求,这里的下标取值就要根据cm.primaryClip.itemCount来动态设置了。

    yechaoa 认证博客专家 Android Jetpack Flutter 小程序 专注于Android领域,同时探索于大前端方向,研究并应用落地前端、小程序、Flutter、Kotlin等相关热门技术点
    Processed: 0.009, SQL: 9