我只是無法管理從谷歌驅動器下載文件,我剛剛創建。我可以獲得webContentLink。如果我通過瀏覽器訪問此文件,我可以下載文件,但是我無法通過我的應用程序下載相同的文件...我幾乎閱讀了有關谷歌驅動器的所有文檔,但我找不到任何方式將文件下載到我的存儲。使用google-api-services-drive從谷歌驅動器下載文件:v3
在這裏,我得到的鏈接文件...我能得到我想要的東西永遠是這樣
downloadLink = m.getAlternateLink();
downloadLink = m.getEmbedLink();
downloadLink = m.getWebContentLink();
downloadLink = m.getWebViewLink();
或類似驅動器Id所有其他參數...
這裏是我的代碼來獲得它的驅動器上的文件的信息:
Query query2 = new Query.Builder()
.addFilter(Filters.and(Filters.eq(
SearchableField.TITLE, "locations.csv"),
Filters.eq(SearchableField.TRASHED, false)))
.build();
Drive.DriveApi.query(mGoogleApiClient, query2)
.setResultCallback(new ResultCallback<DriveApi.MetadataBufferResult>() {
@Override
public void onResult(DriveApi.MetadataBufferResult result) {
if (!result.getStatus().isSuccess()) {
System.out.println("File does not exists");
} else {
for(Metadata m : result.getMetadataBuffer()) {
if (m.getTitle().equals("locations.csv")) {
downloadLink = m.getWebContentLink();
}
}
}
}
});
在這個文件夾中,只有一個文件,我確信。所以我只需要一種方法將這個文件下載到SD卡或更好的特定文件夾中。
歡迎任何幫助!謝謝。
我的解決方案
在點擊代碼中的某處
driveFileMy.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
.setResultCallback(contentsOpenedCallback);
那麼我這樣做:
final private ResultCallback<DriveApi.DriveContentsResult> contentsOpenedCallback =
new ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(DriveApi.DriveContentsResult result) {
if (!result.getStatus().isSuccess()) {
// display an error saying file can't be opened
return;
}
// DriveContents object contains pointers
// to the actual byte stream
DriveContents contents = result.getDriveContents();
InputStream inputStream = contents.getInputStream();
OutputStream out = null;
try {
out = new FileOutputStream(filelocation);
byte[] buffer = new byte[1024];
int read;
while ((read = inputStream.read(buffer)) != -1) {
out.write(buffer, 0, read);
}
out.flush();
inputStream.close();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
};
字符串filelocation是輸出文件,它應該的位置保存。感謝大家 :)!
如果您的downloadLink有一個鏈接,您可以通過瀏覽器下載鏈接,它不僅打開與InputStream的鏈接並將內容保存在SD卡中? – jonathanrz