Die Android-Zwischenablage stellt den zuvor kopierten MIME-Typ nicht bereit, wenn versucht wird, Daten daraus abzurufenAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 Die Android-Zwischenablage stellt den zuvor kopierten MIME-Typ nicht bereit, wenn versucht wird, Daten daraus abzurufen

Post by Anonymous »

Die Android-Anwendung, die ich schreibe, verwendet die Zwischenablage, um das Kopieren/Einfügen von Informationen zwischen verschiedenen Dateien zu ermöglichen. Speicherorte in der App, aber aus bestimmten Gründen gibt die Zwischenablage die Daten nicht mit dem vorgesehenen MIME-Typ zurück, obwohl die Anwendung die Daten zuvor unter Angabe desselben MIME-Typs in die Zwischenablage kopiert hat:
Dies ist der Code, der die Daten in die Zwischenablage kopiert:

Code: Select all

    ...
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)));
...
Und das ist der Code, der genau dieselben Daten erneut aus der Zwischenablage abrufen soll:

Code: Select all

    ...
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);
...
}
...
}
}
...
Aus irgendeinem (zumindest für mich) mysteriösen Grund ergibt das Protokoll, das alle verfügbaren MIME-Typen anzeigt, immer „got 1 MIME-types: [text/plain]“ als einzig verfügbaren, obwohl ich die Daten gerade als
kopiert habe

Code: Select all

"application/vnd.myapp.items+json"
vor wenigen Sekunden in die Zwischenablage verschoben. Irgendeine Idee, warum das so ist? Was stimmt mit dem obigen Code nicht? Was übersehe ich?
Ich bin mir zu 100 % sicher, dass genau dieser Code bereits in früheren Versionen (also Android-Versionen und AndroidStudio-Versionen) funktioniert hat, aber aus irgendeinem seltsamen Grund funktioniert er nicht mehr und ich bin verblüfft, warum das so ist. Irgendjemand eine Idee oder Erklärung?
Die aktuelle Ziel-API meiner Anwendung ist „33“.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post