3

拥有包含文件夹和文件的 Google Drive 帐户。我想制作 android 应用程序来添加和获取文件到那里。QUERY类很有用,但它只能处理应用程序生成的数据

Android Drive API 仅适用于https://www.googleapis.com/auth/drive.file范围。这意味着只有用户使用您的应用程序打开或创建的文件才能被查询匹配。

请帮助,如何将文件添加到早期通过网络界面创建的任何文件夹?

4

2 回答 2

3

除非您确实需要,否则您要避免使用完整的驱动器范围。用户更喜欢您的应用程序的范围更窄,因为这样更容易信任您的数据。有几种方法可以完成大多数文件夹用例,同时仍然只需要文件范围:

使用OpenFileActivity让用户选择他们希望将文件添加到的文件夹。

您可以通过将 OpenFileActivityBuilder 配置为仅显示文件夹 mimetypes 来做到这一点。

 IntentSender intent = driveApi.newOpenFileActivityBuilder()
    .setActivityTitle("Pick a destination folder")
    .setMimeType(new String[] { DriveFolder.MIME_TYPE } })
    .build();
 startIntentSenderForResult(intent, REQUEST_CODE, null, 0, 0, 0);

或者,如果您有一个相应的 Web 应用程序创建了该文件夹,只需对两个应用程序使用相同的开发人员控制台条目,您应该已经可以访问该文件夹。

于 2014-03-06T22:05:02.447 回答
1

不要使用最新的 google API,它是几周前刚刚发布的。它目前仅适用于 drive.file 范围,尚未实现许多功能(例如设置多个父级),并且根据我的经验,它还包含一些需要修复的错误。

com.google.android.gms.common.api.GoogleApiClient

请改用此 API:

com.google.api.services.drive.Drive

    try {


        List<String> scopes = new ArrayList<String>();
        scopes.add("https://www.googleapis.com/auth/drive.appdata");
        scopes.add(DriveScopes.DRIVE);

        GoogleAccountCredential credential = GoogleAccountCredential.usingOAuth2(m_context, scopes);
        credential.setSelectedAccountName(m_account.name);          


        //Get token cannot be run from the main thread;
        //Trying to get a token right away to see if we are authorized

        token = credential.getToken();

        if(token == null){
            Log.e(TAG, "token is null");
        }else{
            Log.i(TAG, "GDrive token: " + token);
            g_drive = new Drive.Builder(
                          AndroidHttp.newCompatibleTransport(),
                          new GsonFactory(), credential).build();

     } catch ( UserRecoverableAuthException e) {
       ....
     }
于 2014-03-06T13:26:28.257 回答