osc的app功能“将复制的URL投递到开源中国”怎么做的

水人 发布于 2020/03/20 09:47
阅读 137
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

刚接触APP开发,求指教。

功能描述:在其他app复制URL,然后切到OSapp,就显示这个投递对话框。

思路:我想应该是操作剪切板吧

ClipboardManager cm =(ClipboardManager)getApplication().getSystemService(Context.CLIPBOARD_SERVICE);
Log.d("MainActivity", "onClip: "+String.valueOf(cm.hasPrimaryClip()));

上面这段代码, 放onCreate、onResume里均为fasle,但放在onCreate的点击事件里,点击触发却能true,为何?我认为本应该放onResume才对吧

加载中
0
水人
水人

原来是要延迟一下

0
水人
水人
new Handler().postDelayed(new Runnable() {
    public void run() {
        cm = (ClipboardManager) MainActivity.this.getSystemService(Context.CLIPBOARD_SERVICE);
        if (!cm.hasPrimaryClip()) {
            return;
        }
        if (cm.getPrimaryClipDescription().hasMimeType("text/plain")) {
            ClipData clipData = cm.getPrimaryClip();
            if (clipData != null && clipData.getItemCount() > 0) {
                // 从数据集中取(粘)第一文本                clipText = clipData.getItemAt(0).getText();
                Log.d("MainActivity", "onResume: " + clipText);

            }
        }
    }
}, 1000);
0
老男孩啊
老男孩啊

自AndroidQ开始,只有当应用处于可交互情况才能访问剪切板和监听剪切板变化,在onResume回调也无法直接访问剪切板,这么做的好处是避免了一些后台应用疯狂监听响应剪切板的内容。

需要监听APP生命周期,切换回APP时poseDelay一下即可继续访问剪切板,AndroidQ以下不用

老男孩啊
老男孩啊
回复 @水人 : Handler或者View都可以postDelayed,上面是简写
水人
水人
谢谢。另外弱弱的问下poseDelay是什么,不是activity的生命周期吧
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部