前言
最近在做App启动自动获取粘贴板的功能时发现,10以上的高版本无法获取剪切板的内容
Android Q对剪切板做了改动
当应用没有获取到焦点的时候,无法获取剪贴板内容
思路
既然应用未获取到焦点,所以无法获取到剪切板内容是正常的,但是当App启动时,此时App已经获取到焦点,但还是无法获取剪切板内容,原因只有一个:在获取焦点的同时获取剪切板内容是有时差间隔的。所以在获取剪切板时延迟一秒左右再去获取剪切板内容,这样就能获取到了。
代码
Handler handler = new Handler()
handle.postDelayed(new Runnable(){
@Override
public void run() {
//此处可放 调用获取剪切板内容的代码
getClipboardContent()
}
},1000)
/**
* 系统剪贴板-获取:
*/
public static String getClipboardContent () {
// 获取系统剪贴板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 返回数据
ClipData clipData = clipboard.getPrimaryClip();
if(clipData == null || clipData.getItemCount() <= 0){
return "";
}
Item item = clipData.getItemAt(0);
if(item == null || item.getText() == null ){
return "";
}
return item.getText().toString();
}