前言
最近在做App啟動自動獲取粘貼板的功能時發(fā)現(xiàn),10以上的高版本無法獲取剪切板的內(nèi)容
Android Q對剪切板做了改動
當(dāng)應(yīng)用沒有獲取到焦點(diǎn)的時候,無法獲取剪貼板內(nèi)容
思路
既然應(yīng)用未獲取到焦點(diǎn),所以無法獲取到剪切板內(nèi)容是正常的,但是當(dāng)App啟動時,此時App已經(jīng)獲取到焦點(diǎn),但還是無法獲取剪切板內(nèi)容,原因只有一個:在獲取焦點(diǎn)的同時獲取剪切板內(nèi)容是有時差間隔的。所以在獲取剪切板時延遲一秒左右再去獲取剪切板內(nèi)容,這樣就能獲取到了。
代碼
Handler handler = new Handler()
handle.postDelayed(new Runnable(){
@Override
public void run() {
//此處可放 調(diào)用獲取剪切板內(nèi)容的代碼
getClipboardContent()
}
},1000)
/**
* 系統(tǒng)剪貼板-獲取:
*/
public static String getClipboardContent () {
// 獲取系統(tǒng)剪貼板
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
// 返回?cái)?shù)據(jù)
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();
}