java - Upload file to existing Google Drive Folder - Android -
i want upload file existing google drive folder.
i using how upload image android app specific folder on google drive folder name not sure how implement (smokybob's answer)
//search name , type folder string qstr = "mimetype = 'application/vnd.google-apps.folder' , title = 'myfolder'"; //get list of folders filelist flist=service.files().list().setq(qstr).execute(); //check result 1 folder file folder; if (flist.getitems().lenght==0){ folder=flist.getitems()[0]; } //create insert request in sample file file = service.files().insert(body, mediacontent); //set parent file.setparents(arrays.aslist(newparentreference().setid(folder.getfolderid()))); //execute request file.execute(); i getting cannot resolve symbol errors filelist, body, mediacontent. getting cannot resolve method .files, getitems(), setparents, newparentsreference, , execute.
class:getfile.java https://github.com/googledrive/android-demos/blob/master/src/com/google/android/gms/drive/sample/demo/createfileactivity.java
public class getfile extends uploaddrive { private static final string tag = "createfileactivity"; @override public void onconnected(bundle connectionhint) { super.onconnected(connectionhint); // create new contents resource drive.driveapi.newdrivecontents(getgoogleapiclient()) .setresultcallback(drivecontentscallback); } final private resultcallback<drivecontentsresult> drivecontentscallback = new resultcallback<drivecontentsresult>() { @override public void onresult(drivecontentsresult result) { if (!result.getstatus().issuccess()) { showmessage("error while trying create new file contents"); return; } final drivecontents drivecontents = result.getdrivecontents(); // perform i/o off ui thread. new thread() { @override public void run() { // write content drivecontents outputstream outputstream = drivecontents.getoutputstream(); writer writer = new outputstreamwriter(outputstream); try { writer.write(mainactivity.drivetext); //what problem? writer.close(); } catch (ioexception e) { log.e(tag, e.getmessage()); } metadatachangeset changeset = new metadatachangeset.builder() .settitle("new file") .setmimetype("text/plain") .setstarred(true).build(); // create file on root folder drive.driveapi.getrootfolder(getgoogleapiclient()) .createfile(getgoogleapiclient(), changeset, drivecontents) .setresultcallback(filecallback); } }.start(); } }; final private resultcallback<drivefileresult> filecallback = new resultcallback<drivefileresult>() { @override public void onresult(drivefileresult result) { if (!result.getstatus().issuccess()) { showmessage("error while trying create file"); return; } showmessage("created file content: " + result.getdrivefile().getdriveid()); } }; }
when folder created under gdaa, produces driveid.
/************************************************************************** * create file/folder in goodrive * @param prnid parent's id, (null or "root") root * @param titl file name * @param mime file mime type * @param file file (with content) create (optional, if null, create folder) * @return file id / null on fail */ static string create(string prnid, string titl, string mime, java.io.file file) { driveid did = null; if (mgac != null && mgac.isconnected() && titl != null) try { drivefolder pfldr = (prnid == null || prnid.equalsignorecase("root")) ? drive.driveapi.getrootfolder(mgac): drive.driveapi.getfolder(mgac, driveid.decodefromstring(prnid)); if (pfldr == null) return null; //----------------->>> metadatachangeset meta; if (file != null) { // create file if (mime != null) { // file must have mime drivecontentsresult r1 = drive.driveapi.newdrivecontents(mgac).await(); if (r1 == null || !r1.getstatus().issuccess()) return null; //-------->>> meta = new metadatachangeset.builder().settitle(titl).setmimetype(mime).build(); drivefileresult r2 = pfldr.createfile(mgac, meta, r1.getdrivecontents()).await(); drivefile dfil = r2 != null && r2.getstatus().issuccess() ? r2.getdrivefile() : null; if (dfil == null) return null; //---------->>> r1 = dfil.open(mgac, drivefile.mode_write_only, null).await(); if ((r1 != null) && (r1.getstatus().issuccess())) try { status stts = file2cont(r1.getdrivecontents(), file).commit(mgac, meta).await(); if ((stts != null) && stts.issuccess()) { metadataresult r3 = dfil.getmetadata(mgac).await(); if (r3 != null && r3.getstatus().issuccess()) { did = r3.getmetadata().getdriveid(); } } } catch (exception e) { ut.le(e); } } } else { meta = new metadatachangeset.builder().settitle(titl).setmimetype(ut.mime_fldr).build(); drivefolderresult r1 = pfldr.createfolder(mgac, meta).await(); drivefolder dfld = (r1 != null) && r1.getstatus().issuccess() ? r1.getdrivefolder() : null; if (dfld != null) { metadataresult r2 = dfld.getmetadata(mgac).await(); if ((r2 != null) && r2.getstatus().issuccess()) { did = r2.getmetadata().getdriveid(); } } } } catch (exception e) { ut.le(e); } return did == null ? null : did.encodetostring(); } (must run on non-ui thread)
id used in subsequent calls "parent id". if have questions unresolved methods, please refer github project. btw (as mentioned before), you're trying accomplish (creates folders, creates text files, reads contents back, deletes files/folders, ...)
good luck
Comments
Post a Comment