博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Clipboard(复制/剪贴板)
阅读量:5095 次
发布时间:2019-06-13

本文共 2906 字,大约阅读时间需要 9 分钟。

Android提供的剪贴板框架,复制和粘贴不同类型的数据。数据可以是文本,图像,二进制流数据或其它复杂的数据类型。

Android提供ClipboardManager、ClipData.Item和ClipData库使用复制和粘贴的框架。为了使用剪贴板的框架,需要把数据转化为剪辑对象,然后把该对象为全系统剪贴板。

为了使用剪贴板,需要通过调用getSystemService()方法来实例化ClipboardManager的对象。它的语法如下:

ClipboardManager myClipboard;myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

复制数据

需要做的下一件事就是通过调用ClipData类的数据方法的相应类型来实例化ClipData对象。如果文本数据在newPlainText方法被调用。必须将数据设置为剪贴板管理器对象的剪辑。它的语法如下:

ClipData myClip;String text = "hello world"; myClip = ClipData.newPlainText("text", text); myClipboard.setPrimaryClip(myClip);

ClipData对象可以采取这三种形式和下面的函数用于创建的那些形式。

Sr.No ClipData形式与方法
1 Text
newPlainText(label, text)
返回ClipData对象,其单个ClipData.Item对象包含一个文本字符串
2 URI
newUri(resolver, label, URI)
返回ClipData对象,其单ClipData.Item对象包含一个URI
3 Intent
newIntent(label, intent)
返回ClipData对象,其单ClipData.Item对象包含意图

粘贴数据

为了粘贴数据,先要通过调用getPrimaryClip()方法拿到剪辑。并从点击就可 ClipData.Item 对象的项目。从对象将得到数据。它的语法如下:

ClipData abc = myClipboard.getPrimaryClip(); ClipData.Item item = abc.getItemAt(0); String text = item.getText().toString();

除了这些方法,也有用于管理剪贴板框架提供 ClipboardManager类的其他方法。这些方法如下:

Sr.No 方法及说明
1 getPrimaryClip()
这个方法只是返回剪贴板上的当前主片段
2 getPrimaryClipDescription()
此方法返回剪贴板上的当前主剪辑的说明,但不是它的数据的一个拷贝
3 hasPrimaryClip()
如果当前剪贴板上的主要片段此方法返回true
4 setPrimaryClip(ClipData clip)
此方法将剪贴板上的当前主片段
5 setText(CharSequence text)
这种方法可直接用于复制文本到剪贴板
6 getText()
这种方法可直接用于获取剪贴板复制的文本

例子

这里有一个例子演示如何使用ClipboardManager类。它创建了一个基本的复制粘贴应用程序,可让您复制的文本,然后通过剪贴板粘贴。

为了试验这个例子,可以在实际设备或模拟器运行此程序。

Steps 描述
1 使用Android Studio创建Android应用程序,并将其命名为:Clipboard 。创建这个项目时确保目标SDK编译在Android SDK中的最新版本或使用更高级别的API。
2 修改 src/MainActivity.java 文件添加必要的代码
3 修改res/layout/activity_main.xml 添加相应的XML组件
4 修改 res/values/string. xml添加必要的字符串组成部分
5 运行应用程序并选择运行Android的设备,并在其上安装的应用和验证结果

以下是修改后的主活动文件的内容src/com.yiibai.clipboard/MainActivity.java.

package com.example.clipboard; import android.annotation.SuppressLint; import android.app.Activity; import android.content.ClipData; import android.content.ClipboardManager; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private ClipboardManager myClipboard; private ClipData myClip; private EditText copyField,pasteField; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); copyField = (EditText)findViewById(R.id.editText1); pasteField = (EditText)findViewById(R.id.editText2); } @SuppressLint("NewApi") public void copy(View view){ String text = copyField.getText().toString(); myClip = ClipData.newPlainText("text", text); myClipboard.setPrimaryClip(myClip); Toast.makeText(getApplicationContext(), "Text Copied", Toast.LENGTH_SHORT).show(); } @SuppressLint("NewApi")

转载于:https://www.cnblogs.com/exmyth/p/4603496.html

你可能感兴趣的文章
[转]JavaScript快速检测浏览器对CSS3特性的支持
查看>>
对接系统的一些思考
查看>>
exception from hresult:0x8000401A(excel文档导出)
查看>>
Master选举原理
查看>>
CSS 基础知识(认识选择器)
查看>>
[ JAVA编程 ] double类型计算精度丢失问题及解决方法
查看>>
Android Token的使用学习
查看>>
小别离
查看>>
★一张图弄明白从零维到十维
查看>>
Java开发学习心得(一):SSM环境搭建
查看>>
固定渲染管线与可编程渲染管线的区别
查看>>
MVC框架
查看>>
微信小程序-发起 HTTPS 请求
查看>>
<Java><!!!><面试题>
查看>>
oracle 11g 导出数据库时,出现空表无法导出问题解决
查看>>
WPF动画设置1(转)
查看>>
backgound-attachment属性学习
查看>>
个人作业——关于K米的产品案例分析
查看>>
基于node/mongo的App Docker化测试环境搭建
查看>>
java web 中base64传输的坑
查看>>