1

我正在尝试创建一个小部件,该小部件从用户那里输入序列号。为方便起见,我还添加了一个粘贴按钮,因为序列号的长度为 14 位。以下代码适用于 android 10 之前的设备

ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
String serial = item.getText();

然后我将串行与我们的串行正则表达式进行比较。问题是,当前代码段为 android 10 返回 null 值。

在限制之后,我在官方文档中找到了。

对剪贴板数据的访问受限。

除非您的应用是默认输入法编辑器 (IME) 或当前具有焦点的应用,否则您的应用无法在 Android 10 或更高版本上访问剪贴板数据。

按下小部件上的按钮时,有什么方法可以启用焦点?提前致谢。

4

1 回答 1

0

访问剪贴板时,您的窗口应该是焦点:

override fun onWindowFocusChanged(hasFocus: Boolean) {
    super.onWindowFocusChanged(hasFocus)
    if(hasFocus){
        val clipboard =
            getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
        val item: ClipData.Item = clipboard.primaryClip.getItemAt(0)
        val serial: String = item.text.toString()
    }
}

这应该在您的活动中起作用。

于 2020-06-03T09:46:53.700 回答