Мне нужно получить resourceId папки, созданной внутри моего диска. Приглашен эти Документы first и second Я делаю это:получить идентификатор папки для диска Google Диска
private void CreateFolderOnGoogleDrive() {
Query query = new Query.Builder()
.addFilter(Filters.and(Filters.eq(
SearchableField.TITLE, "Folder"),
Filters.eq(SearchableField.TRASHED, false)))
.build();
Drive.DriveApi.query(mGoogleApiClient, query)
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
System.out.println("Cannot create folder in the root.");
} else {
boolean isFound = false;
for (Metadata m : result.getMetadataBuffer()) {
if (m.getTitle().equals("Folder")) {
Toast.makeText(getApplicationContext(), "folder exist", Toast.LENGTH_LONG).show();
isFound = true;
break;
}
}
if (!isFound) {
System.out.println("Folder not found; creating it.");
MetadataChangeSet changeSet = new MetadataChangeSet.Builder()
.setTitle("Folder")
.build();
Drive.DriveApi.getRootFolder(mGoogleApiClient)
.createFolder(mGoogleApiClient, changeSet)
.setResultCallback(new ResultCallback<DriveFolder.DriveFolderResult>() {
@Override
public void onResult(DriveFolder.DriveFolderResult result) {
if (!result.getStatus().isSuccess()) {
System.out.println("Error while trying to create the folder");
} else {
System.out.println("Created a folder");
}
}
System.out.println(result.getDriveFolder().getDriveId().getResourceId());
// ALWAYS return as null
});
}
}
}
});
С помощью этого кода я получаю все значения внутри result
для getResourceId() (который является нулевым всегда, когда я получаю это через код), за исключением.
Ну, я даже вижу идентификатор моей папки в драйвере.
Уже сделано много исследований, но ни одно из них не дает никакого решения. Они дают только ПРИЧИНЫ.
Есть ли кто-нибудь, кто решил это?
Я не сталкивался с этой конкретной проблемой, хотя я прочитал, где назначение идентификаторов ресурсов может быть отложено. Взгляните на http://stackoverflow.com/questions/22874657/unpredictable-result-of-driveid-getresourceid-in-google-drive-android-api. – Cheticamp
Да, но это не может отложить на целый день, я думаю. – Atula
Единственное место, где я вижу, где вы пытаетесь получить идентификатор ресурса, находится в обратном вызове 'onResult' для создания в папке. Этот вызов будет всегда возникать сразу же после создания папки, поэтому вы можете ожидать задержки в присвоении идентификатора ресурса , поскольку GDAA, вероятно, еще не синхронизировался. Вы говорите, что вы проверяете идентификатор ресурса на 24 часа позже с другим фрагментом кода (не то, что вы отправили), а идентификатор ресурса по-прежнему равен нулю? – Cheticamp