解决方案

getPrimaryClip() 为空 null

2024-01-19 10:56:37 michael007js 27

getPrimaryClip() 为空 null


当APP打开状态的时候,直接获取剪切板getPrimaryClip() 为空。

  1. 可以在 onWindowFocusChanged() 调取

  2. 可以延迟获取 postDelay 取拿


以下以onWindowFocusChanged举例:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        ClipboardManager clipManager = (ClipboardManager) getContext().getSystemService(CLIPBOARD_SERVICE);
        if (clipManager == null || !clipManager.hasPrimaryClip()) {
            return;
        }
        //如果是文本信息
        if (clipManager != null && clipManager.getPrimaryClipDescription() != null && clipManager.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)) {
            ClipData clip = clipManager.getPrimaryClip();
            if (clip != null) {
                ClipData.Item item = clip.getItemAt(0);
                if (item.getText() != null) {
                    String content = item.getText().toString();
                    //做你该做的事情
                    //TODO
                    //清空粘贴板
                    clipManager.setText("");
                }
            }
        }
    }
}
首页
关于博主
我的博客
搜索