Android Google Drive SDK-как показать список файлов в выбранной папке

Я изо всех сил пытаюсь заставить свой код работать.

Я хочу, чтобы мое приложение (при нажатии кнопки) показывало все папки (и файлы) в корневой папке диска. Но, похоже, это невозможно, так как, хотя я авторизовал приложение с помощью Ouath2, приложение имеет доступ только к файлам и папке, которые выбирает пользователь.

поведение странно в том, что когда открывается выбор папки, он перечисляет только содержимое этой папки, если содержимое папки. Он не будет перечислять файлы вообще.

может ли эксперт посмотреть на мой код и сказать мне, где я ошибаюсь?

я использую PickFolderWithOpener активность, чтобы получить driveId. Он возвращает driveID на основе выбора пользователей из средства выбора..

 DriveId driveId = (DriveId) data.getParcelableExtra(
                            OpenFileActivityBuilder.EXTRA_RESPONSE_DRIVE_ID);

это то, что возвращается здесь, идентификатор диска папки? Затем мне нужно вызвать намерение ListFilesInFolderActivity. Я предполагаю, что я должен передать этот driveID в вызове намерения? Если я отформатирую DriveID как строку и передай, это не сработает. с "не удается найти DriveId. Вы имеете право просматривать этот файл?" сообщение.

Итак, что я делаю, это передача ResourceID.

Intent intent = new Intent(this, ListFilesInFolderActivity.class);
                    intent.putExtra("DriveID", driveId.getResourceId());
                    startActivity(intent);

что нужно использовать в ListFilesInFolderActivity? DriveID или resourceID? Вот что у меня есть в ListFilesInFolderActivity?

Bundle extras = getIntent().getExtras();
        folderId= extras.getString("DriveID"); // this is the resourceID
Drive.DriveApi.fetchDriveId(getGoogleApiClient(), folderId)
                .setResultCallback(idCallback);


final private ResultCallback<DriveIdResult> idCallback = new ResultCallback<DriveIdResult>() {
@Override
public void onResult(DriveIdResult result) {
    if (!result.getStatus().isSuccess()) {
        showMessage("Cannot find DriveId. Are you authorized to view this file?");
        return;
    }
    DriveFolder folder = Drive.DriveApi.getFolder(getGoogleApiClient(), result.getDriveId());
    showMessage("Result driveId is:  " + result.getDriveId());
    folder.listChildren(getGoogleApiClient())
            .setResultCallback(metadataResult);



 }
};

который, кажется, работает, но в нем перечислены только папки в выбранной папке. Он не перечисляет файлы. Почему folder.listChildren(getGoogleApiClient()) не перечислять файлы также!?

надеюсь, это что-то очевидное, чего мне не хватает.

1 ответов


вы не можете сделать это с новым SDK, поскольку он позволяет только доступ к SCOPE_FILE.

Это почему?? "Примечание: Google Drive Android API в настоящее время поддерживает только диск.файл и диск.области авторизации appdata. Если приложению требуются дополнительные разрешения или функции, еще не доступные в Drive Android API, необходимо использовать Java-клиент Google APIs."