适用于Android的Dropbox api v2:如何获取媒体文件详细信息?

时间:2017-03-17 07:24:45

标签: android dropbox-api

如何使用Dropbox API v2 for Android(Java)获取媒体文件及其详细信息?我已经查看FileMetadata的{​​{3}},但我找不到获取文件类型(如音乐,视频,照片,文字等)等文件详细信息的方法,文件的网址和缩略图。

这是我的文件夹和文件列表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 个答案:

答案 0 :(得分:1)

如果您需要媒体信息,则应使用listFolderBuilder获取ListFolderBuilder个对象。您可以使用调用.withIncludeMediaInfo(true)设置媒体信息的参数,然后使用.start()进行API调用。然后,结果将在可用的情况下设置媒体信息。

Dropbox API v2不提供mime类型,但您可以根据需要将自己的文件扩展名保留为mime类型映射。

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

要获取文件的缩略图,请使用getThumbnail