Android将内容复制到剪切板
程序员文章站
2022-03-03 09:40:17
...
近期,项目里需要用到将部分内容复制到剪切板,以前用到都是随用随找,挺麻烦的,最近整理一下,在这里记录一下
其实Android提供的剪贴板框架,Android提供ClipboardManager、ClipData.Item和ClipData库使用复制和粘贴的框架,可以进行复制和粘贴不同类型的数据,
使用就三个步骤:
1,通过调用getSystemService()方法来实例化ClipboardManager的对象
ClipboardManager manager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
2,根据存储对象的不同,创建能够存入剪贴板的ClipData对象
三种数据类型
//复制文字到剪切板,其中‘Label’这是任意文字标签
ClipData mClipData =ClipData.newPlainText("Label", text);
//复制链接url到剪切板,‘Label’这是任意文字标签
ClipData mClipData =ClipData.newRawUri("Label", Uri.parse(url));
//复制Intent到剪切板,‘Label’这是任意文字标签
ClipData mClipData =ClipData.newIntent("Label", intent);
3, 将ClipData数据复制到剪贴板:
manager.setPrimaryClip(mClipData);
然后得到剪切板的数据,调用getPrimaryClip()方法
public String getCopyString(){
ClipData clipData = manager.getPrimaryClip();
if(clipData != null && clipData.getItemCount() > 0 ){
return clipData.getItemAt(0).getText().toString();
}
return null;
}
下面是这个方法类,直接拿来用即可
public class CopyLinkTextHelper {
private static CopyLinkTextHelper instance= null;
private static ClipboardManager manager;
private CopyLinkTextHelper(Context context){
//获取剪贴板管理器:
manager = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
}
public synchronized static CopyLinkTextHelper getInstance(Context context){
if(instance == null){
instance = new CopyLinkTextHelper(context);
}
return instance;
}
/**
* 复制文字到剪切板
* @param text
*/
public void CopyText(String text){
// 创建能够存入剪贴板的ClipData对象
//‘Label’这是任意文字标签
ClipData mClipData =ClipData.newPlainText("Label", text);
//将ClipData数据复制到剪贴板:
manager.setPrimaryClip(mClipData);
}
/**
* 复制链接url到剪切板
* @param url
*/
public void CopyUrl(String url){
//‘Label’这是任意文字标签
ClipData mClipData =ClipData.newRawUri("Label", Uri.parse(url));
//将ClipData数据复制到剪贴板:
manager.setPrimaryClip(mClipData);
}
/**
* 复制Intent到剪切板
* @param intent
*/
public void CopyIntent(Intent intent){
//‘Label’这是任意文字标签
ClipData mClipData =ClipData.newIntent("Label", intent);
//将ClipData数据复制到剪贴板:
manager.setPrimaryClip(mClipData);
}
/**
*
* 从剪贴板中获取数据,如text文字,链接等,
* @return
*/
public String getCopyString(){
ClipData clipData = manager.getPrimaryClip();
if(clipData != null && clipData.getItemCount() > 0 ){
return clipData.getItemAt(0).getText().toString();
}
return null;
}
}