1、ClipboardManager
ClipboardManager是Android系统剪贴板的主要类。使用剪切板功能主要包含以下三个类:
ClipboardManager: 表示一个剪贴板
ClipData: 剪贴板中保存的所有剪贴数据集(剪贴板可同时复制/保存多条多种数据条目)
ClipData.Item: 剪贴数据集中的一个数据条目
1.1、复制
// 获取系统剪贴板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 创建一个剪贴数据集,包含一个普通文本数据条目(需要复制的数据)
ClipData clipData = ClipData.newPlainText(null, "需要复制的文本数据");
// 把数据集设置(复制)到剪贴板
clipboard.setPrimaryClip(clipData);
1.2、粘贴
// 获取系统剪贴板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 获取剪贴板的剪贴数据集
ClipData clipData = clipboard.getPrimaryClip();
if (clipData != null && clipData.getItemCount() > 0) {
// 从数据集中获取(粘贴)第一条文本数据
CharSequence text = clipData.getItemAt(0).getText();
System.out.println("text: " + text);
}
1.3、剪贴板的数据改变监听
// 获取系统剪贴板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 添加剪贴板数据改变监听器
clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
// 剪贴板中的数据被改变,此方法将被回调
System.out.println("onPrimaryClipChanged()");
}
});
// 移除指定的剪贴板数据改变监听器
// clipboard.removePrimaryClipChangedListener(listener);
1.4、清空剪切板内容
void clearClipboard() {
ClipboardManager manager = mClipboardManager;
if (manager != null) {
try {
manager.setPrimaryClip(ClipData.newPlainText(null, null));
} catch (Exception e) {
Log.i(TAG, "clearClipboard: exception>>" + e.getMessage());
}
}
}
2、实战
工具类封装如下:
//保存文本内容到剪切板
public void copyClicks(String text) {
Context context = getApplicationContext();
// 获取系统剪贴板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 创建一个剪贴数据集,包含一个普通文本数据条目(需要复制的数据)
ClipData clipData = ClipData.newPlainText(null, text);
// 把数据集设置(复制)到剪贴板
clipboard.setPrimaryClip(clipData);
Toast.makeText(context, "已复制到剪切板", Toast.LENGTH_SHORT).show();
}
//从剪切板粘贴文本
public String pasteClicks() {
String text = "";
Context context = getApplicationContext();
// 获取系统剪贴板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 获取剪贴板的剪贴数据集
ClipData clipData = clipboard.getPrimaryClip();
if (clipData != null && clipData.getItemCount() > 0) {
// 从数据集中获取(粘贴)第一条文本数据
text = clipData.getItemAt(0).getText().toString();
}
return text;
}