Есть ли возможность вставить содержимое буфера обмена в виджет главного экрана для android 10?
Я пытаюсь создать виджет, который вводит серийный ключ от пользователей. Я также добавил кнопку вставки для удобства, потому что серийный ключ состоит из 14 цифр. Код ниже работал нормально для устройств до Android 10
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
String serial = item.getText();
Затем я сравниваю серийный номер с нашим серийным регулярным выражением. Проблема в том, что текущий фрагмент кода возвращает нулевое значение для Android 10.
Следующее ограничение я нашел в официальной документации.
Ограниченный доступ к данным буфера обмена.
Если ваше приложение не является редактором метода ввода по умолчанию (IME) или приложением, которое в настоящее время имеет фокус, ваше приложение не может получить доступ к данным буфера обмена на Android 10 или выше.
Есть ли способ включить фокус при нажатии кнопки на виджете? Заранее спасибо.
1 ответ
Ваше окно должно быть сфокусировано при доступе к буферу обмена:
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()
}
}
Это должно работать внутри вашей деятельности.