android - Get list file from GoogleDrive with Java -


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