2017-03-17 7 views
1

Wie erhalten Sie Mediendateien und ihre Details mit Dropbox API v2 für Android (Java)? Ich bin durch die documentation für die FileMetadata gegangen, aber ich konnte nicht die Methoden finden, um Dateidetails wie Dateityp (z. B. Musik, Video, Foto, Text, ...), Datei-URL und Miniaturansicht zu erhalten.Dropbox api v2 für Android: Wie erhalten Sie Mediendateien Details?

das ist meine Ordner und Dateien Liste Asyntask:

 //login 
     DbxClientV2 client = DropboxClient.getClient(accessToken); 

     // Get files and folder metadata from root directory 
     String path = ""; 
     TreeMap<String, Metadata> children = new TreeMap<>(); 
     try { 
      try { 
       result = client.files().listFolder(path); 
       arrayList = new ArrayList<>(); 
       //arrayList.add("/"); 
       while (true) { 
        int i = 0; 
        for (Metadata md : result.getEntries()) { 

         if (md instanceof DeletedMetadata) { 
          children.remove(md.getPathLower()); 
         } else { 
          String fileOrFolder = md.getPathLower(); 
          children.put(fileOrFolder, md); 

         //if (!fileOrFolder.contains("."))//is a file 
          arrayList.add(fileOrFolder); 

          if (md instanceof FileMetadata) { 
           FileMetadata file = (FileMetadata) md; 

           //I need something like file.mineType, file.url, file.thumbnail 
           file.getParentSharedFolderId(); 
           file.getName(); 
           file.getPathLower(); 
           file.getPathDisplay(); 
           file.getClientModified(); 
           file.getServerModified(); 
           file.getSize();//in bytes 
           MediaInfo mInfo = file.getMediaInfo();//Additional information if the file is a photo or video, null if not present 
           MediaInfo.Tag tag; 
           if (mInfo != null) { 
            tag = mInfo.tag();} 
          } 
         } 
         i++; 
        } 

        if (!result.getHasMore()) break; 

        try { 
         result = client.files().listFolderContinue(result.getCursor());//what is this for ? 
        } catch (ListFolderContinueErrorException ex) { 
         ex.printStackTrace(); 
        } 
       } 
      } catch (ListFolderErrorException ex) { 
       ex.printStackTrace(); 
      } 
     } catch (DbxException e) { 
      e.printStackTrace(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return result; 

Antwort

1

Wenn Sie Medieninformationen wollen, sollten Sie listFolderBuilder verwenden, um ein ListFolderBuilder Objekt zu erhalten. Sie können den Aufruf .withIncludeMediaInfo(true) verwenden, um den Parameter für die Medieninformationen festzulegen, und dann .start(), um den API-Aufruf zu tätigen. Die Ergebnisse enthalten dann die Medieninformationen, sofern verfügbar.

Dropbox API v2 bietet keine MIME-Typen, aber Sie können Ihre eigene Dateierweiterung nach MIME-Typ-Mapping beibehalten.

Um einen bestehenden Link für eine Datei zu erhalten, verwenden Sie listSharedLinks. Um ein neues zu erstellen, verwenden Sie createSharedLinkWithSettings.

Um ein Thumbnail für eine Datei zu erhalten, verwenden Sie getThumbnail.

+0

vielen dank! Gibt es eine andere Datei-URL-Methode als 'listSharedLinks'? Das sollte äquivalent zu "api.media (entry.path, true) .url" in API v1 sein ... Ich brauche die Medien-URL, um zu TV zu streamen, es ist etwas wie "https://dl.dropboxusercontent.com/ 1/view/b5c1234gu6dwk5f/mango.jpg' für ein Bild –

+1

Das Äquivalent zu 'media' von v1 wäre [' getTemporaryLink'] (https://dropbox.github.io/dropbox-sdk-java/api-docs/v2 .0.x/com/dropbox/core/v2/dateien/DbxUserFilesRequests.html # getTemporaryLink-java.lang.String-). – Greg

+0

Danke! Ich habe die 'GetTemporaryLinkResult' Klasse gefunden, nachdem ich von 2.0.1 auf die neueste 2.0.6 API aktualisiert habe –

Verwandte Themen