微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android 10 中的剪贴板未按预期工作

如何解决Android 10 中的剪贴板未按预期工作

我已经实现了剪贴板功能的副本。因此,每当用户复制某些内容并且我的应用程序在此之后恢复时,我都会显示一个 Snackbar 来执行某些操作。它在 Android 9 中运行良好,但在 Android 10 中,根据策略更改,它不会观察背景中的剪贴板更改。没关系,但是当我在 onResume 中调用以下方法时,它不会得到任何文本,因为 hasPrimaryClip 为 false。但是在同一个屏幕上,如果我在任何按钮上调用相同的方法,那么它就可以正常工作并返回复制的文本。可能是剪贴板在 onResume 之后没有立即提供访问权限,并且在单击任何按钮时会有一些延迟,它允许访问。可能是什么问题?任何想法都值得高度赞赏。

谢谢

public String readFromClipboard() {
        ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        if (clipboard.hasPrimaryClip()) {
            android.content.ClipDescription description = clipboard.getPrimaryClipDescription();
            android.content.ClipData data = clipboard.getPrimaryClip();
            if (data != null && description != null && description.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))
                return String.valueOf(data.getItemAt(0).getText());
        }
        return null;
    }

解决方法

我观察到的是,如果 hasFocus 为真,我们可以在 'onWindowFocusChanged(boolean hasFocus)' 方法中访问剪贴板数据。这种方法被称为大约。比 onResume 晚约 100 毫秒。因此,通过单击按钮进行复制工作正常,因为应用程序已经获得焦点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。