我正在尝试创建一个小部件,需要用户输入序列号。我还添加了一个粘贴按钮以方便用户,因为序列号是14位数的。下面的代码在安卓10之前的设备上运行良好。
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
String serial = item.getText();
然后我把序列号和我们的序列号比较。问题是,当前的snippet对android 10返回null值。
下面的限制,我发现在 公文.
对剪贴板数据的访问受限。
除非你的应用是默认的输入法编辑器(IME)或者是当前有焦点的应用,否则你的应用在Android 10或更高版本上无法访问剪贴板数据。
有什么方法可以让我在小组件上的按钮被按下时启用焦点吗?先谢谢了。
当访问剪贴板时,你的窗口应该被聚焦。
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()
}
}
这应该在你的活动中工作。