i'm developing app can login, download, upload , show list file google drive.
i've found java code google drive sdk run quite slow , isn't work.
i'm reading solution don't know change scope
my mainactivity:
// google static final int request_account_picker = 1; static final int request_authorization = 2; static final int capture_image = 3; private googleaccountcredential credential; private static uri fileuri; private static drive service; public void onlogingoogle(view v) { credential = googleaccountcredential.usingoauth2(this, drivescopes.drive); startactivityforresult(credential.newchooseaccountintent(), request_account_picker); } public void onuploadgoogle(view v) { thread t = new thread(new runnable() { @override public void run() { try { // file's binary content java.io.file filecontent = new java.io.file("/sdcard/a.jpg"); filecontent mediacontent = new filecontent("image/jpeg", filecontent); // file's metadata. com.google.api.services.drive.model.file body = new com.google.api.services.drive.model.file(); body.settitle(filecontent.getname()); body.setmimetype("image/jpeg"); com.google.api.services.drive.model.file file = service.files().insert(body, mediacontent).execute(); if (file != null) { showtoast("photo uploaded: " + file.gettitle()); // startcameraintent(); } } catch (userrecoverableauthioexception e) { startactivityforresult(e.getintent(), request_authorization); } catch (ioexception e) { e.printstacktrace(); } } }); t.start(); } public void ondownloadgoogle(view v) { downloadfile(); } private void downloadfile() { thread thread = new thread(new runnable() { @override public void run() { try { com.google.api.services.drive.model.file file = service.files().get("0b-iak7o9sfipyk9ztjzvy2xrevu").execute(); // filelist file = service.files().list().execute(); // list<com.google.api.services.drive.model.file> filelist = // file.getitems(); // com.google.api.services.drive.model.file fileitem = // filelist.get(0); // log.d("fileid" , fileitem.getid()); // log.d("count", "retreived file list"); if (file.getdownloadurl() != null && file.getdownloadurl().length() > 0) { httpresponse resp = service.getrequestfactory().buildgetrequest(new genericurl(file.getdownloadurl())).execute(); inputstream inputstream = resp.getcontent(); // writetofile(inputstream); } } catch (ioexception e) { log.e("writetofile", e.tostring()); e.printstacktrace(); } } }); thread.start(); } list<file> mgfile; public void onlistgoogle(view v) { asynctask<void, void, string> task = new asynctask<void, void, string>() { @override protected string doinbackground(void... arg0) { // todo auto-generated method stub try { mgfile = retrieveallfiles(); int = 0; } catch (ioexception e) { // todo auto-generated catch block e.printstacktrace(); } return null; } protected void onpostexecute(string result) { log.d("dolphin glist", string.valueof(mgfile.size())); }; }; task.execute(); log.d("dolphin counting", "aa"); } private list<file> retrieveallfiles() throws ioexception { list<file> result = new arraylist<file>(); files.list request = service.files().list(); { try { filelist files = request.execute(); result.addall(files.getitems()); request.setpagetoken(files.getnextpagetoken()); } catch (ioexception e) { system.out.println("an error occurred: " + e); request.setpagetoken(null); } } while (request.getpagetoken() != null && request.getpagetoken().length() > 0); return result; } private drive getdriveservice(googleaccountcredential credential) { return new drive.builder(androidhttp.newcompatibletransport(), new gsonfactory(), credential).build(); } @override protected void onactivityresult(int requestcode, int resultcode, intent data) { switch (requestcode) { case request_account_picker: if (resultcode == result_ok && data != null && data.getextras() != null) { string accountname = data.getstringextra(accountmanager.key_account_name); if (accountname != null) { credential.setselectedaccountname(accountname); service = getdriveservice(credential); } } break; case request_authorization: if (resultcode == activity.result_ok) { // savefiletodrive(); toast.maketext(this, "login complete", toast.length_short); } else { startactivityforresult(credential.newchooseaccountintent(), request_account_picker); } break; } } the logcat:
"application name not set. call builder#setapplicationname." how list of files folder? it's awesome if have working example
it works me:
private list<file> sendrequest(){ list<file> result = new arraylist<file>(); try{ files.list request = service.files().list().setq("trashed = false"); do{ try{ filelist files = request.execute(); result.addall(files.getitems()); request.setpagetoken(files.getnextpagetoken()); } catch(ioexception e){ system.out.println("an error occurred: " + e); request.setpagetoken(null); } } while(request.getpagetoken() != null && request.getpagetoken().length() > 0); } catch(ioexception e1){ e1.printstacktrace(); } for(file file : result){ log.d(tag, "file : " + file.gettitle()); } return result; } if want files specific folder, can try request:
files.list request = service.files().list().setq("'" + folderid + "' in parents , trashed = false"); as said, it's pretty slow, don't know how better.
Comments
Post a Comment