Android 剪切板相关
本篇文章简单介绍android中的ClipboardManager.
1:简介
ClipboardManager是android中用于管理剪切板一个类.它允许应用程序读取和写入剪切板数据,包括文本,图片等.
ClipboardManager类提供了以下几个主要方法:
setPrimaryClip(ClipData clip):将指定的ClipData对象设置为剪贴板的内容。
getPrimaryClip():获取剪贴板的当前内容,返回一个ClipData对象。
hasPrimaryClip():检查剪贴板是否有内容。
getText():从剪贴板中获取文本数据。
setText(CharSequence text):将指定的文本设置到剪贴板中。
2: 获取实例
获取实例也很简单.如下:
ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
3: 获取剪切板内容
获取剪切板文本数据:
public static String getCopyText(Context context) {
if (clipboardManager == null) {
clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
}
if (null == clipboardManager) return null;
ClipData clipData = clipboardManager.getPrimaryClip();
if (clipData != null && clipData.getItemCount() > 0) {
return clipData.getItemAt(0).getText().toString();
}
return null;
}
getPrimaryClip()方法获取剪切板的当前内容,返回一个ClipData对象.
4: 设置剪切板内容
-
设置剪切板文字:
public static void setCopyText(Context context,String s) { try { if (clipboardManager == null) { clipboardManager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); } if (null == clipboardManager) return; ClipData clipData = ClipData.newPlainText(null, s); clipboardManager.setPrimaryClip(clipData); } catch (Throwable e) { Log.e("xxxxx", "setCopyText: ", e); } }
5: 监听剪切板
private ClipboardManager.OnPrimaryClipChangedListener clipChangedListener = () -> {
ClipData clipData = clipboardManager.getPrimaryClip();
String clipStr = "";
if (clipData != null && clipData.getItemCount() > 0) {
clipStr = clipData.getItemAt(0).getText().toString();
}
Log.i("xxxxx", "onPrimaryClipChanged: " + clipStr);
};
clipboardManager.addPrimaryClipChangedListener(clipChangedListener);
但是addPrimaryClipChangedListener只能监听当前应用程序剪切板内容的变化,无法监测其他应用,至于原因就是为了安全性和隐私.
6:移除监听
if (clipboardManager != null) {
clipboardManager.removePrimaryClipChangedListener(clipChangedListener);
}