首页 >> 大全

android复制与粘贴

2023-08-25 大全 24 作者:考证青年

官网关于复制的教程:

关于 13模拟器无法运行可查看这篇文章:

界面UI如下:

界面中有两个输入框,点击 copy 按钮会复制第一个输入框中的文本,点击 paste按钮会把复制的文本粘贴到第二个输入框,实现代码如下:

class MainActivity : AppCompatActivity() {private val binding: ActivityMainBinding by lazy { ActivityMainBinding.inflate(layoutInflater) }override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(binding.root)binding.copyButton.setOnClickListener { copyText() }binding.pasteButton.setOnClickListener { pasteText() }}private fun copyText() {val text = binding.srcEdit.text.trim().toString()if (text.isEmpty()) {Toast.makeText(this, "请输入一些文本", Toast.LENGTH_SHORT).show()return}val cm = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager// 将要复制的数据放到一个剪贴对象中val clipData = ClipData.newPlainText("", text)// 设置数据为敏感内容,则在剪贴板中文本会显示为星号clipData.description.extras = PersistableBundle().apply { putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, true) }// 把剪贴对象放到剪切板中cm.setPrimaryClip(clipData)// 由于Android 12或更低的版本没有复制反馈,所以这里使用一个toast进行反馈if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) {Toast.makeText(this, "已复制", Toast.LENGTH_SHORT).show()}}private fun pasteText() {val cm = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager// 如果剪贴板有数据,且是文本类型的数据if (cm.hasPrimaryClip() && cm.primaryClipDescription?.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN) == true) {val item = cm.primaryClip?.getItemAt(0)val pasteText = item?.text ?: ""binding.pasteEdit.setText(pasteText)}}}

在 13版本中,复制时会提示出复制的内容,且可设置为显示为星号,使用了原生模拟器测试,发现复制时必须在输入法显示的情况下才会有提示,且输入法本身也有显示出复制的内容,而且不显示为星号,复制提示才会显示为星号,所以这个应该是目前的Bug吧,效果如下:

粘贴复制怎么操作方法__粘贴复制快捷键ctrl加什么

我们把设置为显示星号的代码注释掉再次运行,结果如下:

这时可以看到两个位置都显示出复制的内容了,且都是明文显示。在我的小米11 pro ( 13)上运行时,无论输入法有无显示,点 “copy” 按钮时均无复制提示,相同的是,如果输入法显示时在输入法上也会显示出复制的内容,且无论是否设置为密文都是明文显示的。

点击 paste 按钮进行粘贴,系统会弹出toast进行提示,效果如下:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了