내 드라이브에서 생성 된 폴더의 resourceId를 가져와야합니다. 이 코드Google 드라이브 폴더의 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
});
}
}
}
});
, 나는 (내가 코드를 통해 그것을 얻을 때 항상 널)을 getResourceId()을 제외하고 result
내부의 모든 값을 얻고있다 : 내가이 일을하고이 문서를 first 및 second 을 언급했다.
글쎄, 드라이브 URL에서 내 폴더의 ID를 볼 수도 있습니다.
이미 많은 연구를 해보았지만 아무도 아직 해결책을 제시하지 못했습니다. 그들은 단지 이유를 제시하고 있습니다.
이 문제를 해결 한 사람이 있습니까?
리소스 ID 할당이 지연 될 수있는 곳을 읽었지만이 특정 문제가 발생하지 않았습니다. http://stackoverflow.com/questions/22874657/unpredictable-result-of-driveid-getresourceid-in-google-drive-android-api를 살펴보십시오. – Cheticamp
네,하지만 하루 종일 지연 될 수는 없습니다. – Atula
리소스 ID를 얻으려는 곳을 볼 수있는 유일한 곳은 폴더의 생성을위한'onResult' 콜백에 있습니다. 이 호출은 폴더 생성 직후에 항상 발생하므로 GDAA가 아직 동기화하지 않았으므로 리소스 ID가 지연 될 것으로 예상 할 수 있습니다. 당신은 의 리소스 ID를 24 시간 후에 코드의 다른 부분 (게시 한 내용이 아닌)과 리소스 ID가 여전히 null인지 확인 하시겠습니까? – Cheticamp