美文网首页
Android 系统剪贴板的使用 - 复制、获取和清空

Android 系统剪贴板的使用 - 复制、获取和清空

作者: Jinbeen | 来源:发表于2019-04-23 14:56 被阅读0次
    • ClipboardManager: 表示一个剪贴板
    • ClipData: 剪贴板中保存的所有剪贴数据集(剪贴板可同时复制/保存多条多种数据条目)
    • ClipData.Item: 剪贴数据集中的一个数据条目

    复制内容

    /**
     * 实现文本复制功能
     *
     * @param content 复制的文本
     */
    public static void copy(String content) {
        if (!TextUtils.isEmpty(content)) {
            // 得到剪贴板管理器
            ClipboardManager cmb = (ClipboardManager) CloudReaderApplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
            cmb.setText(content.trim());
            // 创建一个剪贴数据集,包含一个普通文本数据条目(需要复制的数据)
            ClipData clipData = ClipData.newPlainText(null, content);
            // 把数据集设置(复制)到剪贴板
            cmb.setPrimaryClip(clipData);
        }
    }
    

    获取系统剪贴板内容

    /**
     * 获取系统剪贴板内容
     */
    public static String getClipContent() {
        ClipboardManager manager = (ClipboardManager) CloudReaderApplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
        if (manager != null) {
            if (manager.hasPrimaryClip() && manager.getPrimaryClip().getItemCount() > 0) {
                CharSequence addedText = manager.getPrimaryClip().getItemAt(0).getText();
                String addedTextString = String.valueOf(addedText);
                if (!TextUtils.isEmpty(addedTextString)) {
                    return addedTextString;
                }
            }
        }
        return "";
    }
    

    清空剪贴板内容

    /**
     * 清空剪贴板内容
     */
    public static void clearClipboard() {
        ClipboardManager manager = (ClipboardManager) CloudReaderApplication.getInstance().getSystemService(Context.CLIPBOARD_SERVICE);
        if (manager != null) {
            try {
                manager.setPrimaryClip(manager.getPrimaryClip());
                manager.setText(null);
            } catch (Exception e) {
                DebugUtil.error(e.getMessage());
            }
        }
    }
    

    剪贴板的数据改变监听

    // 获取系统剪贴板
    ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    
    // 添加剪贴板数据改变监听器
    clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
            // 剪贴板中的数据被改变,此方法将被回调
            System.out.println("onPrimaryClipChanged()");
        }
    });
    
    // 移除指定的剪贴板数据改变监听器
    // clipboard.removePrimaryClipChangedListener(listener);
    

    相关文章

      网友评论

          本文标题:Android 系统剪贴板的使用 - 复制、获取和清空

          本文链接:https://www.haomeiwen.com/subject/zfuvgqtx.html