Android的Clipboard
ClipboardManager
系统全局剪贴板对象
//获取ClipboardManager对象
ClipManager clipManager = (ClipManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData
Clip对象 只存在一个
//将数据放到 clip 对象中
ClipData clip = ClipData.newPlainText("simple text copy", "Hello World!");
//创建一个包含 htmlText 的 ClipData
//一般在浏览器中对网页进行拷贝的时候会调用此方法
//其中 htmlText 是包含 HTML 标签的字符串
static public ClipData newHtmlText(CharSequence label, CharSequence text, String htmlText);
//创建一个包含 Intent 的 ClipData
static public ClipData newIntent(CharSequence label, Intent intent);
//创建一个包含 Uri 的 ClipData,MimeType 会根据 Uri 进行修改
static public ClipData newUri(ContentResolver resolver, CharSequence label, Uri uri);
//与 newUri 相对应,但是并不会根据 Uri 修改 MimeType
static public ClipData newRawUri(CharSequence label, Uri uri);
ClipData.Item
包含文本,uri,intent
ClipDescription
clip metadata 包含了ClipData对象的metadata信息 通过getMimeType(int index),MimeType包含四中类型:
// 对应 ClipData newPlainText(label, text) 的 MimeType
public static final String MIMETYPE_TEXT_PLAIN = "text/plain";
// 对应 ClipData.newHtmlText(label, text, htmlText) 的 MimeType
public static final String MIMETYPE_TEXT_HTML = "text/html";
// 对应 ClipData.newUri(cr, label, uri) 的 MimeType
public static final String MIMETYPE_TEXT_URILIST = "text/uri-list";
// 对应 ClipData.newIntent(label, intent) 的 MimeType
public static final String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";
步骤:
- 获取 ClipManager 对象
ClipManager clipManager = (ClipManager) context.getSystemService(Context.CLIPBOARD_SERVICE); - 将数据放到 clip 对象中
ClipData clip = ClipData.newPlainText("simple text copy", "Hello World!");
类似的方法还有
//创建一个包含 htmlText 的 ClipData
//一般在浏览器中对网页进行拷贝的时候会调用此方法
//其中 htmlText 是包含 HTML 标签的字符串
static public ClipData newHtmlText(CharSequence label, CharSequence text, String htmlText);
//创建一个包含 Intent 的 ClipData
static public ClipData newIntent(CharSequence label, Intent intent);
//创建一个包含 Uri 的 ClipData,MimeType 会根据 Uri 进行修改
static public ClipData newUri(ContentResolver resolver, CharSequence label, Uri uri);
//与 newUri 相对应,但是并不会根据 Uri 修改 MimeType
static public ClipData newRawUri(CharSequence label, Uri uri);
- 将 clip 对象放入剪贴板
clipManager.setPrimaryClip(clip);
- 从剪贴板中获取 clip 对象
if(!clipManager.hasPrimaryClip()) {
return;
}
ClipData clip = clipManager.getPrimaryClip();
//获取 ClipDescription
ClipDescription description = clip.getPrimaryClipDescription();
//获取 label
String label = description.getLabel().toString();
//获取 text
String text = clip.getItemAt(0).getText().toString();

浙公网安备 33010602011771号