AndroidQ(10)获取剪切板内容适配

前言

最近在做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();
}

你可能感兴趣的:(AndroidQ(10)获取剪切板内容适配)