【问题标题】:Setting Description in Metadata for Google Drive Android APIGoogle Drive Android API 元数据中的设置说明
【发布时间】:2014-04-07 04:20:04
【问题描述】:

【问题讨论】:

    标签: google-drive-api google-drive-android-api


    【解决方案1】:

    不幸的是,AFAIK 目前还没有。我现在要做的是像这样初始化 GDAA 和 RESTful API(参见“垃圾解决方案”SO 22295903):

      private GoogleApiClient _gac;
      private com.google.api.services.drive.Drive _svc;
      public GoogleApiClient init(String email){
        _gac = new GoogleApiClient.Builder(UT.ACTX).addApi(com.google.android.gms.drive.Drive.API)
          .addScope(com.google.android.gms.drive.Drive.SCOPE_FILE).setAccountName(email).build();
    
        com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential crd =
         GoogleAccountCredential.usingOAuth2(UT.ACTX, 
                                Arrays.asList(com.google.api.services.drive.DriveScopes.DRIVE_FILE));
        crd.setSelectedAccountName(email);  
        _svc = new com.google.api.services.drive.Drive.Builder(
                                AndroidHttp.newCompatibleTransport(), new GsonFactory(), crd).build();
        return this;
      }
    

    您从 DGAA(上面的 GoogleApiClient _gac)获得描述,但像这样(关闭 UI 线程)将其更新/写入 RESTFul:

      public void oldDescUpW(String titl, String mime, String desc) {
        try {
          final FileList gLst = _svc.files().list()
             .setQ("title = '"+titl+".jpg' and mimeType = '"+mime+"' and trashed = false")
             .setFields("items(id)").execute();
          if (gLst.getItems().size() == 1) {
            final String sId = gLst.getItems().get(0).getId();
            com.google.api.services.drive.model.File body = 
                                                    new com.google.api.services.drive.model.File();
            body.setDescription(desc);
          _svc.files().patch(sId, body).execute();
          }
        } catch (Exception e) {} 
      }    
    

    也可以使用来自 GDAA 的“资源 ID”来处理 RESTful 中的文件,但它并不总是立即可用(如果文件是在 GDAA 中创建的)。见SO 22874657

    免责声明:

    这是一种 HACK,不应在 GDAA 交付替代方案之后继续存在。

    【讨论】:

    • 谢谢。松散相关:身份验证如何在这里工作?是否需要发生两次:一次用于 DGAA,一次用于 RESTful?
    • 我通过调用“connect()”的应用程序条目中的 GDAA 身份验证,该条目返回为“onConnectionFailed()”。使用“startResolutionForResult()”调用帐户选择器,当它返回“onActivityResult()”时,我抓住了帐户/电子邮件,以后没有其他方法可以获取它(SO 22865630)。它再次进入'connect()'......不需要RESTful的其他身份验证。见这里:github.com/seanpjanson/EmailSwichActivity/blob/master/…
    • 我之前尝试过,但实际的意图对象为空。可能是因为我没有 GET_ACCOUNTS 权限吗?有趣的是,GDAA auth 也为 RESTful API 提供服务。不知道它是如何工作的,但如果这就是它应该工作的方式,那么我猜这就是最重要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多