Android 剪切板相关

113 阅读1分钟

Android 剪切板相关

本篇文章简单介绍android中的ClipboardManager.

1:简介

ClipboardManager是android中用于管理剪切板一个类.它允许应用程序读取和写入剪切板数据,包括文本,图片等.

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: 设置剪切板内容

  1. 设置剪切板文字:

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

本文由博客一文多发平台 OpenWrite 发布!