获取文件夹中的所有子文件夹和文件google drive api android

时间:2014-09-08 12:00:29

标签: java android google-drive-api

我正在尝试使用google drive api列出Google云端硬盘帐户中的所有子文件夹和文件夹。当文件夹只包含子文件夹时,我只使用DriveFolder.getChildren时获得第一个子文件夹。如果文件夹只包含文件,我将不会让任何具有相同调用的子项,即DriverFolder.getChildren。 我也试过查询特定文件的文件夹,当然存在,但我也没有得到任何点击。

代码示例:

new Thread(new Runnable() {

    @Override
    public void run() {
        //mGoogleApiClient is connected and mRootDrive is a folder in the drive account
        DriveFolder f = Drive.DriveApi.getFolder(mGoogleApiClient, mRootDriveId);
        MetadataResult fDataresult = f.getMetadata(mGoogleApiClient).await();
        // Will print the right name of the folder
        Log.i(Tag, "Folder name " + fDataresult.getMetadata().getTitle());

        MetadataBufferResult result = f.listChildren(mGoogleApiClient).await();
        // Will be one even if there are 10 folders
        Log.i(Tag, "Number of children " + result.getMetadataBuffer().getCount());                      
    }
}).start();

包含查询语句,代码如下:

new Thread(new Runnable() {

    @Override
    public void run() {
       //mGoogleApiClient is connected and mRootDrive is a folder in the drive account
       DriveFolder f = Drive.DriveApi.getFolder(mGoogleApiClient, mRootDriveId);
       MetadataResult fDataresult = f.getMetadata(mGoogleApiClient).await();

       // Will print the right name of the folder
       Log.i(Tag, "Folder name " + fDataresult.getMetadata().getTitle());

       Query query = new Query.Builder().addFilter(Filters.eq(SearchableField.TITLE, "tmp.txt")).build();

       MetadataBufferResult result = f.queryChildren(mGoogleApiClient, query).await();
       MetadataBuffer d = result.getMetadataBuffer();

       // Will be 0 even if the file exist in the folder
       Log.i(Tag, "Number of children " + d.getCount());
    }
 }).start();

经过进一步调查后,似乎在应用和谷歌硬盘之间同步数据存在一些问题。如果我在我的应用程序中使用谷歌驱动器UI并选择一个文件,那么将列出此文件,但没有其他文件。我试图使用Drive.DriveApi.requestSync,结果相同。

如果我理解这一点,那么GoogleApiClient范围只能是应用程序已创建或被查看的文件和文件夹,而不是所有文件夹和文件。我在寻找的是范围https://www.googleapis.com/auth/drive。此范围不由GoogleApiClient处理。

0 个答案:

没有答案