使用Java从GoogleDrive获取列表文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用Java从GoogleDrive获取列表文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5034字,纯文字阅读大概需要8分钟。
内容图文
我正在开发一个可以登录,下载,上传和显示Google云端硬盘列表文件的应用.
我发现Java代码来自Google Drive SDK,但运行速度很慢,无法正常工作.
我正在阅读solution,但不知道在哪里更改该范围
我的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 i = 0;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
Log.d("Dolphin get 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();
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);
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;
}
}
日志:
"Application name is not set. Call Builder#setApplicationName."
如何从文件夹中获取文件列表?如果有一个可行的例子真棒
解决方法:
这个对我有用:
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;
}
如果您想要来自特定文件夹的文件,则可以尝试以下请求:
Files.List request = service.files().list().setQ("'" + folderId + "' in parents and trashed = false");
如您所说,它的速度很慢,但是我不知道如何做得更好.
内容总结
以上是互联网集市为您收集整理的使用Java从GoogleDrive获取列表文件全部内容,希望文章能够帮你解决使用Java从GoogleDrive获取列表文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。