类似于淘宝淘口令一样的功能。打开app监测粘贴板功能。本来好好的功能突然不好用了。
经查是
clipManager.hasPrimaryClip() return false
费了“九牛二虎之力”后(google一下)
Android 10 中 只有默认输入法(IME)或者是目前处于焦点的应用, 才能访问到剪贴板数据.
本来在onStart 进行监测的。所以咱们改到onResume中进行监听。并增加200ms的延时。这样就ok了。
下面附上粘贴板的工具类
public class ClipboardUtils {
//获取粘贴板的信息
public static void getContent(Context context) {
try {
ClipboardManager clipManager = (ClipboardManager) context.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) {
//此处是TEXT文本信息
String content = item.getText().toString();
//todo
//做你自己的逻辑处理.处理完成记得清空粘贴板.
//clipManager.setText("");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void copyString(Context context, String content) {
ClipboardManager cm = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
if (StringUtil.isNotNull(content)) {
cm.setText(content);
ToastUtils.toastShort("");
} else {
ToastUtils.toastShort("");
}
}
}