So überprüfen Sie sicher, ob es sich bei einem URI um einen Dokumentbaum handeltAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 So überprüfen Sie sicher, ob es sich bei einem URI um einen Dokumentbaum handelt

Post by Anonymous »

Ich möchte ContentResolver.query für einen URI aufrufen. Da ich den von einem ACTION_OPEN_DOCUMENT_TREE-Absicht zurückgegebenen URI nicht an ContentResolver.query übergeben kann, da es sich um einen Dokumentbaum und nicht um ein Dokument handelt, mache ich zuerst Folgendes:

Code: Select all

if(DocumentsContract.isTreeUri(uri))
uri = DocumentsContract.buildDocumentUriUsingTree(uri, DocumentsContract.getTreeDocumentId(uri));
Wenn das so gemacht ist, kann ich die konvertierte URI an ContentResolver.query übergeben und es funktioniert gut.
Aber es gibt ein Problem: Anscheinend prüft isTreeUri nur, ob so etwas wie /tree/ in der URI vorkommt, und gibt dann true zurück, was zu vielen Fehlalarmen führt, z. B. Nehmen wir an, ich möchte das Unterverzeichnis in foo im durch uri angegebenen Dokumentbaum mithilfe von ContentResolver.query untersuchen, also mache ich zunächst so etwas, um das Unterverzeichnis foo an den Dokumentbaum uri anzuhängen, der von ACTION_OPEN_DOCUMENT_TREE zurückgegeben wurde:

Code: Select all

DocumentFile targetUri = DocumentFile.fromTreeUri(this, uri);
DocumentFile subDir = targetUri.findFile("foo");
Uri subDirUri = subDir.getUri();
Die wörtliche Darstellung von subDirUri sieht nun etwa so aus:

Code: Select all

content://com.android.externalstorage.documents/tree/primary%3AMyDir/document/primary%3AMyDir%2Ffoo
Da dieser URI die Teilzeichenfolge /tree/ enthält, gibt DocumentsContract.isTreeUri für diesen URI „true“ zurück, aber natürlich ist es nicht wirklich ein Baum, weil ich ihn problemlos an ContentResolver.query übergeben kann und in diesem Fall darf ich ihn NICHT an buildDocumentUriUsingTree übergeben, da dies fehlschlägt Ich suche nach einer Möglichkeit, sicher festzustellen, ob ein URI ein Dokumentbaum ist oder nicht. Anscheinend ist isTreeUri nicht wirklich für den Job geeignet...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post