Буфер обмена Android не предоставляет ранее скопированный MIME-тип при попытке получить из него данныеAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Буфер обмена Android не предоставляет ранее скопированный MIME-тип при попытке получить из него данные

Сообщение Anonymous »

Приложение для Android, которое я пишу, использует буфер обмена, позволяющий копировать/вставлять информацию между разными файлами. местоположения в приложении, но по каким-то причинам буфер обмена не возвращает данные, используя предполагаемый MIME-тип, хотя приложение ранее скопировало данные в буфер обмена, указав тот же самый MIME-тип:
Это код, который копирует данные в буфер обмена:

Код: Выделить всё

    ...
String data = convertToJSON(object); // the data that I want to copy-paste (an object representad as text using JSON syntax)
String mimeType = "application/vnd.myapp.items+json";
ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setPrimaryClip(new ClipData("items", new String[] { mimeType }, new ClipData.Item(data)));
...
А это код, который должен снова извлечь те же самые данные из буфера обмена:

Код: Выделить всё

    ...
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = clipboard.getPrimaryClip();
if (clip != null && clip.getItemCount() > 0) {
ClipData.Item   clipItem = clip.getItemAt(0);
ClipDescription clipDesc = clip.getDescription();
String[] availableMimeTypes = clipDesc.filterMimeTypes("*/*");
if (availableMimeTypes != null) {
Collection availableMimeTypesList = Arrays.asList(availableMimeTypes);
Log.v(TAG, "got " + clipDesc.getMimeTypeCount() + " MIME-types: " + availableMimeTypesList);
if (availableMimeTypesList.contains("application/vnd.myapp.items+json")) {
// *** the above check always fails and the data is never retrieved :-( ***
String clipboardContent = clipItem.coerceToText(this).toString();
Object x = convertFromJSON(clipboardContent);
...
}
...
}
}
...
По какой-то (по крайней мере для меня) загадочной причине журнал, отображающий все доступные MIME-типы, всегда выдает «получил 1 MIME-тип: [text/plain]» как единственный доступный, хотя я только что скопировал данные как

Код: Выделить всё

"application/vnd.myapp.items+json"
в буфер обмена всего несколько секунд назад. Есть идеи, почему это так? Что не так с приведенным выше кодом? Чего мне не хватает?
Для проверки я также добавил «проверку работоспособности» и отобразил, какие MIME-версии предоставляются сразу после добавления моих данных в буфер обмена, и это также показывает только text/plain, хотя я только что добавил клип с MIME-типом application/vnd.myapp.items+json. Что здесь происходит?
Я на 100% уверен, что именно этот код работал раньше в более ранних версиях (то есть версиях Android, а также версиях AndroidStudio), но по какой-то странной причине он перестал работать, и я озадачен, почему это так. Есть идеи или объяснения?
Текущим целевым API моего приложения является «33».

Подробнее здесь: https://stackoverflow.com/questions/798 ... g-to-retri
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»