Google drive api 任何人都可以在Android中使用目录列表功能

Google drive api 任何人都可以在Android中使用目录列表功能,google-drive-api,Google Drive Api,看起来,最近发布的Google Drive SDK支持目录列表 我尝试将其集成到我的Android应用程序中 package com.jstock.cloud; import java.io.IOException; import java.util.ArrayList; import java.util.List; import android.util.Log; import com.google.api.client.googleapis.auth.oauth2.GoogleCre

看起来,最近发布的Google Drive SDK支持目录列表

我尝试将其集成到我的Android应用程序中

package com.jstock.cloud;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import android.util.Log;

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.services.GoogleKeyInitializer;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.extensions.android2.AndroidHttp;
import com.google.api.services.drive.Drive;
import com.google.api.services.drive.Drive.Files;
import com.google.api.services.drive.model.File;
import com.google.api.services.drive.model.FileList;
import com.jstock.gui.Utils;

public class CloudFile {
    public final java.io.File file;
    public final long checksum;
    public final long date;
    public final int version;
    private CloudFile(java.io.File file, long checksum, long date, int version) {
        this.file = file;
        this.checksum = checksum;
        this.date = date;
        this.version = version;
    }

    public static CloudFile newInstance(java.io.File file, long checksum, long date, int version) {
        return new CloudFile(file, checksum, date, version);
    }

    public static CloudFile loadFromGoogleDrive(String authToken) {
        final HttpTransport transport = AndroidHttp.newCompatibleTransport();
        final JsonFactory jsonFactory = new GsonFactory();
        GoogleCredential credential = new GoogleCredential();
        credential.setAccessToken(authToken);
        Drive service = new Drive.Builder(transport, jsonFactory, credential)
            .setApplicationName(Utils.getApplicationName())
            .setJsonHttpRequestInitializer(new GoogleKeyInitializer(ClientCredentials.KEY))
            .build();

        List<File> files = retrieveAllFiles(service);
        Log.i("CHEOK", "size is " + files.size());
        for (File file : files) {
            Log.i(TAG, "title = " + file.getTitle());
        }
        return null;
    }

    /**
     * Retrieve a list of File resources.
     *
     * @param service Drive API service instance.
     * @return List of File resources.
     */
    private static List<File> retrieveAllFiles(Drive service) {
        List<File> result = new ArrayList<File>();
        Files.List request = null;
        try {
            request = service.files().list();
        } catch (IOException e) {
            Log.e(TAG, "", e);
            return result;
        }

        do {
            try {
                FileList files = request.execute();

                result.addAll(files.getItems());
                request.setPageToken(files.getNextPageToken());
            } catch (IOException e) {
                Log.e(TAG, "", e);
                request.setPageToken(null);
            }
        } while (request.getPageToken() != null && request.getPageToken().length() > 0);

        Log.i("CHEOK", "yup!");
        return result;
    } 

    private static final String TAG = "CloudFile";
}
package com.jstock.cloud;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入android.util.Log;
导入com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
导入com.google.api.client.googleapis.services.GoogleKeyInitializer;
导入com.google.api.client.http.HttpTransport;
导入com.google.api.client.json.JsonFactory;
导入com.google.api.client.json.gson.GsonFactory;
导入com.google.api.client.extensions.android2.AndroidHttp;
导入com.google.api.services.drive.drive;
导入com.google.api.services.drive.drive.Files;
导入com.google.api.services.drive.model.File;
导入com.google.api.services.drive.model.FileList;
导入com.jstock.gui.Utils;
公共类云文件{
公共最终java.io.File文件;
公共最终长校验和;
公开最终长期日期;
公开最终int版本;
私有云文件(java.io.File文件,长校验和,长日期,int版本){
this.file=文件;
这个。校验和=校验和;
this.date=日期;
this.version=版本;
}
公共静态CloudFile newInstance(java.io.File文件,长校验和,长日期,int版本){
返回新的CloudFile(文件、校验和、日期、版本);
}
从GoogleDrive加载公共静态云文件(字符串authToken){
final HttpTransport transport=AndroidHttp.newCompatibleTransport();
最终的JsonFactory JsonFactory=新的GsonFactory();
GoogleCredential credential=新的GoogleCredential();
credential.setAccessToken(authToken);
驱动器服务=new Drive.Builder(传输、jsonFactory、凭证)
.setApplicationName(Utils.getApplicationName())
.setJsonHttpRequestInitializer(新的GoogleKeyInitializer(ClientCredentials.KEY))
.build();
列表文件=检索所有文件(服务);
Log.i(“CHEOK”,“size是”+files.size());
用于(文件:文件){
Log.i(标记,“title=“+file.getTitle());
}
返回null;
}
/**
*检索文件资源列表。
*
*@param服务驱动API服务实例。
*@返回文件资源列表。
*/
专用静态列表检索所有文件(驱动器服务){
列表结果=新建ArrayList();
Files.List请求=null;
试一试{
请求=service.files().list();
}捕获(IOE异常){
Log.e(标签“,”e);
返回结果;
}
做{
试一试{
FileList files=request.execute();
result.addAll(files.getItems());
request.setPageToken(files.getNextPageToken());
}捕获(IOE异常){
Log.e(标签“,”e);
request.setPageToken(null);
}
}while(request.getPageToken()!=null&&request.getPageToken().length()>0);
Log.i(“CHEOK”,“是的!”);
返回结果;
} 
私有静态最终字符串TAG=“CloudFile”;
}

我总是从服务器返回0文件,并且没有引发任何异常。是否有我遗漏的内容?

您必须请求访问完整驱动器作用域以列出所有文件:

如果使用默认(和推荐)范围
https://www.googleapis.com/auth/drive.file
,您将只能看到应用程序创建或打开的文件