我正在开发一个Android项目,我正在尝试使用Google Drive API,并且我已经获得了大部分它工作,但我在如何执行下载时遇到问题。如何获取文件ID,以便我可以从Android上的Google Drive API执行文件下载
我无法找到任何地方我如何获取文件ID,以便我可以执行下载。为了测试,我检索了我的驱动器帐户中的所有文件,并将它们添加到列表数组中,然后获得列表中第一个文件的ID。
然后我将文件ID复制到下载文件的命令中,并且这个工作成功,但我不知道如何获得我想要下载的特定文件的文件ID。
下面是我用来下载文件的代码。
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();
}
0B-Iak7O9SfIpYk9zTjZvY2xreVU
是我下载的文件时,我做了一个列表,选择的第一个文件,我检索到的文件ID,但我怎么能说我想下载,File_1并获得其ID来话通这个给service.get()。execute函数。
基本上我的最终目标是在我的应用程序中,我将一个XML文件上传到Google Drive,然后再下载文件。它只会是一个文件,并且将始终具有相同的名称。我是否立即着手或者有更好的方法来实现我正在尝试做的事情。
我希望这是有道理的,任何帮助将不胜感激。
感谢
感谢您的帮助,这似乎是很多工作,告诉android获取所有文件的列表,然后遍历所有文件,找到我想要的文件,以便我可以获得ID。期望只提供一个文件名,并检索该ID。谢谢,虽然我会试试 – Boardy 2013-02-25 13:33:06
你实际上并没有告诉android来做它,而是谷歌的服务器。通过这种方式,他们的服务器正在完成您的工作(从(可能很长的)文件列表中筛选正确的文件)。另外,通过网络传输的数据更少。 – stan0 2013-02-25 13:42:35
是的,我看到你的观点,只是看起来很慢,很长时间啰嗦,当我列表找到文件ID是为我的测试,在问题中提到它花了几秒钟完成,我不是那么过分我的云端硬盘帐户中有大量文件 – Boardy 2013-02-25 18:22:57