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."