Googleドライブからファイルをダウンロードすることはできません。私はwebContentLinkを入手できます。私はこのブラウザにアクセスするとファイルをダウンロードできますが、アプリで同じファイルをダウンロードすることはできません... Googleドライブに関するほとんどすべてのドキュメントを読んでいますが、私のストレージにファイルをダウンロードする方法が見つかりませんでした。google-api-services-driveを使用してGoogleドライブからファイルをダウンロード:v3
ここで私は、ファイルへのリンクを取得...私はこの
downloadLink = m.getAlternateLink();
downloadLink = m.getEmbedLink();
downloadLink = m.getWebContentLink();
downloadLink = m.getWebViewLink();
またはDriveIdのような他のすべてのパラメータと同様にほしいと思うものを得ることができます...ここで
は、取得するための私のコードですドライブ上のファイルに関する情報:
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();
}
}
}
}
});
このフォルダには、ファイルが1つしかありません。だから私は、この1つのファイルをバックグラウンドで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は、それがあるべき、出力ファイルの場所です保存されました。みんな、ありがとう :)!
ダウンロードリンクにブラウザ経由でダウンロードできるリンクがある場合、そのリンクをInputStreamで開き、コンテンツをSDカードに保存するだけでなく、 – jonathanrz