Это код, который копирует данные в буфер обмена:
Код: Выделить всё
...
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);
...
}
...
}
}
...
Код: Выделить всё
"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
Мобильная версия