欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
    }

}

 

相关标签: android