Буфер обмена в 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;
    }

person Usman Rana    schedule 29.01.2021    source источник


Ответы (1)


Я заметил, что мы можем получить доступ к данным буфера обмена в методе 'onWindowFocusChanged(boolean hasFocus)', если hasFocus имеет значение true. Этот метод называется ок. ~ на 100 мс позже, чем onResume. Таким образом, копирование нажатием кнопки работало нормально, потому что приложение уже было в фокусе.

person Usman Rana    schedule 29.01.2021