2017-03-17 125 views
1

如何使用Dropbox API for Android(Java)获取媒体文件及其详细信息?我已经通过了documentationFileMetadata,但我找不到获取文件类型(如音乐,视频,照片,文本等),文件的URL和缩略图等文件详细信息的方法。Android版Dropbox api v2:如何获取媒体文件的详细信息?

这是我的文件夹和文件列表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; 

回答

1

如果你想媒体信息,你应该使用listFolderBuilder得到一个ListFolderBuilder对象。您可以使用呼叫.withIncludeMediaInfo(true)设置媒体信息的参数,然后使用.start()进行API调用。然后结果将在可用的情况下设置媒体信息集。

的Dropbox API第2版不提供MIME类型,但您可以根据需要保持自己的文件扩展名到MIME类型的映射。

获取现有链接文件,请使用listSharedLinks。要创建一个新的,使用createSharedLinkWithSettings。请使用getThumbnail

+0

非常感谢!有没有一个文件的URL方法,而不是'listSharedLinks'?它应该等同于API v1中的'api.media(entry.path,true).url' ...我需要将媒体网址流式传输到电视,它就像'https://dl.dropboxusercontent.com/ 1/view/b5c1234gu6dwk5f/mango.jpg' –

+1

v1的'media'等价物就是['getTemporaryLink'](https://dropbox.github.io/dropbox-sdk-java/api-docs/v2 .0.x/COM/Dropbox的/核心/ V2 /文件/ DbxUserFilesRequests.html#getTemporaryLink-java.lang.String-)。 – Greg

+0

谢谢!从2.0.1升级到最新的2.0.6 API后,我发现'GetTemporaryLinkResult'类 –