GoogleドライブAndroid API(GDAA)を使用しています。ユーザーがファイル(Googleドキュメント、スプレッドシート、画像、動画、音声など)をドライブから取り出し、アプリサーバーに送信します。Googleドライブからファイルを選択し、Androidアプリ経由でサーバーに送信(アップロード)
私はウェブ上のいくつかのチュートリアルに続いて、GDAAを使用するための公式のGoogleドキュメントも守ってきました。
私は同様に、以下の回答を試してみました:Fetching contents of Google Drive file through FileId
をしかし、これはあまりにも動作しません。私はresult.getStatus().isSuccess()
を常にfalse
としています。 私はなぜそれが理解できません。
次は私のopen()
機能です:今、私はこのコードに頼っていますについて
/**
* This is Result result handler of Drive contents.
*/
final ResultCallback<DriveApi.DriveContentsResult> driveContentsCallback =
new ResultCallback<DriveApi.DriveContentsResult>() {
@Override
public void onResult(DriveApi.DriveContentsResult result) {
if (!result.getStatus().isSuccess()) {
return;
}
// Read from the input stream an print to LOGCAT
DriveContents driveContents = result.getDriveContents();
BufferedReader reader = new BufferedReader(new InputStreamReader(driveContents.getInputStream()));
StringBuilder builder = new StringBuilder();
String line;
try {
while ((line = reader.readLine()) != null) {
builder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
String contentsAsString = builder.toString();
Log.i("ContentAsString", contentsAsString);
// Close file contents
driveContents.discard(mGoogleApiClient);
}
};
:
private void open() {
DriveFile driveFile = mFileId.asDriveFile();
driveFile.open(mGoogleApiClient, DriveFile.MODE_READ_ONLY, null)
.setResultCallback(driveContentsCallback);
mFileId = null;
}
そして、次は私がfalse
としてresult.getStatus().isSuccess()
を取得するコールバックです。 Googleスプレッドシートとドキュメントを開くことができましたが、画像や動画だけでなくアプリのサーバーにアップロードする必要があります(ファイルを開く必要はありません)。私はこれを達成する方法はありますか?
私はStorage Access Framework(SAF)について読んでおり、Kitkat以降のGoogleドライブファイルにアクセスできるかもしれませんが、私のアプリはJellyBean以上で動作するデバイスをサポートしているため、GGDAを利用しています。
私はまだREST APIをチェックしていません。私はこれを正しい方法でやっているのか、私が望むことを達成するために全く違う方法があるのかを理解したい。そして、これが正しいとすれば、何がうまくいかないのでしょうか?
ご協力いただければ幸いです。