2016-05-14 1 views
0

В моем приложении я кодирую действие для резервного копирования локальной базы данных на Google Диск. Я позволить пользователю выбрать папку для сохранения файла с помощью Диска intentPicker и сохранение результата в моем OnActivityResult:Convert DriveId to human readable path

@Override 
    protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) { 
     switch (requestCode) { 
      // REQUEST_CODE_PICKER 
      case 2: 
       intentPicker = null; 

       if (resultCode == RESULT_OK) { 
        //Get the folder's drive id 
        DriveId mFolderDriveId = data.getParcelableExtra(
          OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID); 

        uploadToDrive(mFolderDriveId); 
       } 

После загрузки файла я хочу, чтобы показать пользователю, где был сохранен файл. Итак, Мне нужно преобразовать папку DriveId в человеческий читаемый путь, например /drive/MyBackups/May.

Я уже пробовал driveId.toString, но он возвращает строку с бесполезными цифрами и буквами, такими как DriveId:CASDFAD2Jmasdf==....

+1

Когда вы получите mFolderDriveId, я предлагаю вам выполнить запрос на выбор метаданных и показать только имя папки для пользователя. Поскольку пользователь только что выбрал папку, переместившись через его диск, у него уже будет достаточно контекста. Чтобы получить полный путь, вам нужно иметь доступ к предкам выбранной папки вплоть до корня, чего не ожидается для приложения с областью области FILE. – Shailendra

ответ

0

Как назад предлагаемый, если возможно, полный путь к папке не ожидается для приложения с областью диска FILE. Поэтому я решил, что он запрашивает метаданные и показывает только заголовок.

private void setBackupFolderTitle(DriveId id){ 
     id.asDriveFolder().getMetadata((mGoogleApiClient)).setResultCallback(
      new ResultCallback<DriveResource.MetadataResult>() { 
       @Override 
       public void onResult(DriveResource.MetadataResult result) { 
        if (!result.getStatus().isSuccess()) { 
         showErrorDialog(); 
         return; 
        } 
        Metadata metadata = result.getMetadata(); 
        // Set folder title in TextView 
        folderTextView.setText(metadata.getTitle()); 
       } 
      } 
     ); 
    } 
2

Работа с методами Drive API для папок, обратите внимание на следующие важные ключи, приведенные в Drive Rest API - Work with Folders:

  • папка представляет собой файл с MIME типа application/vnd.google-apps.folder и без расширения.
  • Вы можете использовать корень псевдонима обратиться к корневой папке в любом месте файла ID предоставляется

С этими данными ключами, вы можете добавить в запросе родительский идентификатор со ссылкой на файл, который вы находитесь ища, то вы можете следовать логике, приведенной в этой постсоветской позиции - What's the right way to find files by “full path” in Google Drive API v2.

Я надеюсь, что это сработает для вас.

+0

Спасибо, так что теперь я могу это сделать, используя SDK Andorid вместо API-интерфейса Rest, так? –