Android提供的剪贴板框架,复制和粘贴不同类型的数据。数据可以是文本,图像,二进制流数据或其它复杂的数据类型。
Android提供ClipboardManager、ClipData.Item和ClipData库使用复制和粘贴的框架。为了使用剪贴板的框架,需要把数据转化为剪辑对象,然后把该对象为全系统剪贴板。
为了使用剪贴板,需要通过调用getSystemService()方法来实例化ClipboardManager的对象。它的语法如下:
ClipboardManagermyClipboard;myClipboard=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
复制数据
需要做的下一件事就是通过调用ClipData类的数据方法的相应类型来实例化ClipData对象。如果文本数据在newPlainText方法被调用。必须将数据设置为剪贴板管理器对象的剪辑。它的语法如下:
ClipDatamyClip;Stringtext="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 对象的项目。从对象将得到数据。它的语法如下:
ClipDataabc=myClipboard.getPrimaryClip();ClipData.Itemitem=abc.getItemAt(0);Stringtext=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.
packagecom.example.clipboard;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.content.ClipData;importandroid.content.ClipboardManager;importandroid.os.Bundle;importandroid.view.Menu;importandroid.view.View;importandroid.widget.EditText;importandroid.widget.Toast;publicclassMainActivityextendsActivity{privateClipboardManagermyClipboard;privateClipDatamyClip;privateEditTextcopyField,pasteField;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){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")publicvoidcopy(Viewview){Stringtext=copyField.getText().toString();myClip=ClipData.newPlainText("text",text);myClipboard.setPrimaryClip(myClip);Toast.makeText(getApplicationContext(),"Text Copied",Toast.LENGTH_SHORT).show();}@SuppressLint("NewApi")publicvoidpaste(Viewview){ClipDataabc=myClipboard.getPrimaryClip();ClipData.Itemitem=abc.getItemAt(0);Stringtext=item.getText().toString();pasteField.setText(text);Toast.makeText(getApplicationContext(),"Text Pasted",Toast.LENGTH_SHORT).show();}@OverridepublicbooleanonCreateOptionsMenu(Menumenu){// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main,menu);returntrue;}}
以下是经修改res/layout/activity_main.xml 的内容
以下是 res/values/string.xml 的内容
<?xml version="1.0"encoding="utf-8"?>ClipboardSettingsHello world!Copy TextPaste TextText to copyCopied Text
以下是 AndroidManifest.xml 文件的内容:
让我们试着来运行修改剪贴板应用程序。安装AVD并启动程序,如果一切设置和应用程序都没有问题,它会显示以下仿真器窗口:
现在只是在文本输入任何文字复制字段,然后选择复制文本按钮。下面的通知将显示其显示如下:
现在,只要按下按钮,粘贴,会看到它被复制,现在粘贴复制的文本的字段中的文本。它如下所示:
¥ 我要打赏
纠错/补充
收藏
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。