Описание настройки в метаданных для Android API Google Диска

Есть ли способ установить описание метаданных?

https://developer.android.com/reference/com/google/android/gms/drive/Metadata.html#getDescription()

Если да, то каков предел длины?

Я ничего не вижу в API: https://developer.android.com/reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html


person Mark    schedule 07.04.2014    source источник


Ответы (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 выше), но обновляете/записываете его в 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 для обращения к файлу в RESTful, но он не всегда сразу доступен (если файл создан в GDAA). См. SO 22874657.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ:

Это HACK, и он не должен оставаться в живых после доставки GDAA альтернативы.

person seanpj    schedule 07.04.2014
comment
Спасибо. Свободно связанные: как здесь работает аутентификация? Нужно ли это делать дважды: один раз для DGAA и один раз для RESTful? - person Mark; 07.04.2014
comment
Я прохожу аутентификацию GDAA в записи приложения, вызывающей «connect ()», которая возвращается как «onConnectionFailed ()». Вызовите средство выбора учетной записи, используя «startResolutionForResult ()», когда оно вернется в «onActivityResult ()», Я ЗАХВАТЫВАЮ АККАУНТ/ЭЛЕКТРОННУЮ ПОЧТУ, ДРУГОГО СПОСОБА ПОЛУЧИТЬ ЕГО ПОЗЖЕ НЕТ (SO 22865630). И он снова переходит к «connect ()» ... Никакой другой аутентификации для RESTful не требуется. См. здесь: github.com/seanpjanson/EmailSwichActivity/blob/master/ - person seanpj; 08.04.2014
comment
Я пробовал это раньше, но фактический объект намерения был нулевым. Может быть, это потому, что у меня не было разрешения GET_ACCOUNTS? Интересно, что авторизация GDAA также выполняет аутентификацию для RESTful API. Понятия не имею, как это работает, но если это так и должно работать, то, думаю, это все, что имеет значение. - person Mark; 08.04.2014