Ich brauche die ResourceId eines Ordners in meinem Laufwerk erstellt. Geworben diesen docs first und second Ich tue dies:Get Google Drive Folder ResourceID
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
});
}
}
}
});
Mit diesem Code, ich bin jeden Wert innerhalb result
mit Ausnahme des getResourceId bekommen() (die immer null ist, wenn ich es durch den Code zu bekommen).
Nun, ich kann sogar die ID meines Ordners in der Laufwerks-URL sehen.
Schon viel Forschung getan, aber keine von ihnen gibt noch eine Lösung. Sie geben nur GRÜNDE.
Gibt es jemanden, der das gelöst hat?
Ich habe dieses spezielle Problem nicht kennengelernt, obwohl ich gelesen habe, wo die Zuweisung von Ressourcen-IDs verzögert werden kann. Sehen Sie sich http://stackoverflow.com/questions/22874657/unpredictable-result-of-driveid-getresourceid-in-google-drive-android-api an. – Cheticamp
ja, aber es kann nicht einen ganzen Tag verzögern, denke ich. – Atula
Der einzige Ort, den ich sehe, wo Sie versuchen, die Ressource ID zu bekommen, ist in der 'OnResult' Callback für die Erstellung des Ordners. Dieser Aufruf wird immer unmittelbar nach dem Erstellen des Ordners ausgeführt, sodass Sie möglicherweise eine Verzögerung in der Zuweisung einer Ressourcen-ID erwarten, da GDAA wahrscheinlich noch nicht synchronisiert wurde. Sagen Sie, dass Sie die Ressourcen-ID den Ordner 24 Stunden später mit einem anderen Stück Code (nicht, was Sie gepostet haben) überprüfen und die Ressourcen-ID immer noch null ist? – Cheticamp