Monday, 15 June 2015

android - DriveResource.listParents does not work -



android - DriveResource.listParents does not work -

i developing application android, need list of parents of file taken google drive.

i correctly obtain driveid using drive.driveapi.newopenfileactivitybuilder(), when utilize driveresource.listparents obtain empty list if resource have parent.

i utilize same googleapiclient drive.driveapi.newopenfileactivitybuilder() , driveresource.listparents, not think scope problem.

@override public void onactivityresult(int requestcode, int resultcode, intent data) { if (requestcode == constants.request_code_google_drive_file_picker) { if (resultcode == result_ok) { mselectedfiledriveid = (driveid) data.getparcelableextra(openfileactivitybuilder.extra_response_drive_id); } else { setresult(constants.result_code_ko); finish(); } } } ... private resultcallback<metadatabufferresult> metadatabuffercallback = new resultcallback<metadatabufferresult>() { @override public void onresult(metadatabufferresult result) { if (!result.getstatus().issuccess()) { sdkutils.showmessage(thisactivity, "impossible salvare l'ultima posizione aperta in google drive"); return; } metadatabuffer metadatabuffer = result.getmetadatabuffer(); // here obtain empty object } }; ... mgoogleapiclient = new googleapiclient.builder(this) .setaccountname(driveaccontname) .addapi(drive.api) .addscope(drive.scope_file) .addconnectioncallbacks(this) .addonconnectionfailedlistener(this).build(); ... drivefile drivefile = drive.driveapi.getfile(getgoogleapiclient(), mselectedfiledriveid); drivefile.listparents(googleapiclient apiclient).setresultcallback(metadatabuffercallback);

have suggestions? thanks!

so not think scope problem.

it's - scope problem !!!

google drive android api provides drive.file , drive.appfolder scope.

file scope means access files user chooses application. drive.driveapi.newopenfileactivitybuilder() dialog allow user browse through whole drive application granted access file or folder user select's.

suppose have next folder construction on drive -

/root | +---books +---c++ +---programming_gems.pdf +---c++_notes.docs

now using drive.driveapi.newopenfileactivitybuilder() pick programming_gems.pdf. app has obtained access pdf. can retrieve file , metadata. app won't able obtain access parent folder, c++ in case. why? because user has not yet given access c++ folder; specific file within folder. makes sense also; otherwise can retrieve file folder leaving user worried.

pick c++ folder using same drive.driveapi.newopenfileactivitybuilder(). if app tries retrieve parent folder of programming_gems.pdf, granted access.

try 1 more thing now; seek list contents of c++ folder itself. wil returned app? - programming_gems.pdf. why, because user has not granted access other file, c++_notes.docs.

i hope clear.

p.s.

by way, select between picking files or folder, have set mime type. see next code e.g.,

if (openfolder) { mime_type = new string[]{drivefolder.mime_type}; } else { mime_type = new string[]{}; } intentsender intentsender = drive.driveapi .newopenfileactivitybuilder() .setmimetype(mime_type) .build(getgoogleapiclient());

if scheme of scopes don't match requirements can alternatively utilize google drive rest apis - read on - http://stackoverflow.com/a/25871516/1363471

android google-drive-sdk

No comments:

Post a Comment