andoridQ获取剪切板内容,当复制内容到剪切板,应用从后台切换到前台,无法获取剪切板内容问题

 

这个问题要谢谢 论坛区的老哥,在论坛来找到了正确的回答.

 androidQ 对剪切板的改动是,当应用没有获取到焦点的时候是无法读取剪切板内容的。

但是, 在应用切换到前台的时候,此时app获取到了焦点啊?有人会有这样的疑问。。

其实是,获取到焦点,和获取到剪切板内容的这个过程必须有一个延迟,  写一个线程延迟一秒左右,再去去读剪切板内容,就可以读取到了.

这个也困扰了好久,终于找到了原因,希望能帮你解决问题O(∩_∩)O

方法一:

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            //获取剪切板文字逻辑写到这里。
        }
    }
 

 

方法二:

//我的Baseactivity 的 重写的方法
@Override
protected void onResume() {
    super.onResume();

 
    //必须放在 hander的 runable 异步线程中(不能放在Thread  中,有的手机(oppo就会出现)会报线程中不能使用hander 的异常,
可能获取剪切板的操作 在不能在Thread线程中使用吧)
    Handler mHandler = new Handler(Looper.getMainLooper());
    Message message = handler.obtainMessage();
 //延迟一秒
    mHandler.postDelayed(new ContentRunThread(), 1000);
    mHandler.sendMessage(message);

}

//获取剪切板的内容

class ContentRunThread implements Runnable {
    @Override
    public void run() {

      
        StatService.onResume(BaseActivity.this);
        // 获取剪贴板数据
        String content = null;

      
            ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
            try {
                ClipData data = cm.getPrimaryClip();
                ClipData.Item item = data.getItemAt(0);

                if (!Utils.isEmpty(item.getText() + "")) {
                    content = item.getText().toString();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }


    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值