Android 複製文本到剪切板,及ClipboardManager相關操作

這個功能也是很常見了,一般都是爲了方便用戶操作,比如複製訂單編號。
不廢話,下面就來看看具體是怎麼操作的。

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中類型:

  • newPlainText
  • newHtmlText
  • newIntent

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來動態設置了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章