Google 驱动器 Android SDK 无法写入应用程序文件夹
Google Drive Android SDK can't write to App Folder
我想将我的应用程序数据保存在 Google 驱动器中,以便在用户的设备之间共享。
首先,如果没有文件,我会在 google 驱动器中创建一个:
Drive.DriveApi.getAppFolder(driveApiClient)
.createFile(driveApiClient, changeSet, null)
在回调中我打开文件:
driveFileResult.getDriveFile().open(driveApiClient, DriveFile.MODE_WRITE_ONLY, null)
然后在那个回调中我按照描述写入文件 https://developers.google.com/drive/android/files#making_modifications:
DriveContents contents = driveContentsResult.getDriveContents();
try {
ParcelFileDescriptor parcelFileDescriptor = contents.getParcelFileDescriptor();
FileOutputStream fileOutputStream = new FileOutputStream(parcelFileDescriptor
.getFileDescriptor());
Writer writer = new OutputStreamWriter(fileOutputStream);
writer.write("hello world");
} catch (IOException e) {
e.printStackTrace();
}
contents.commit(driveApiClient, null, new ExecutionOptions.Builder().setConflictStrategy(ExecutionOptions.CONFLICT_STRATEGY_OVERWRITE_REMOTE).build())
在提交的状态回调中,我获得了成功。
下次打开文件时,文件为空,元数据中的大小为 0。
我做错了什么?
刚刚做了一个快速测试。一定要在提交前关闭 OutputStreamWriter
- writer.close()
;否则,您将得到一个空文件。
我想将我的应用程序数据保存在 Google 驱动器中,以便在用户的设备之间共享。
首先,如果没有文件,我会在 google 驱动器中创建一个:
Drive.DriveApi.getAppFolder(driveApiClient)
.createFile(driveApiClient, changeSet, null)
在回调中我打开文件:
driveFileResult.getDriveFile().open(driveApiClient, DriveFile.MODE_WRITE_ONLY, null)
然后在那个回调中我按照描述写入文件 https://developers.google.com/drive/android/files#making_modifications:
DriveContents contents = driveContentsResult.getDriveContents();
try {
ParcelFileDescriptor parcelFileDescriptor = contents.getParcelFileDescriptor();
FileOutputStream fileOutputStream = new FileOutputStream(parcelFileDescriptor
.getFileDescriptor());
Writer writer = new OutputStreamWriter(fileOutputStream);
writer.write("hello world");
} catch (IOException e) {
e.printStackTrace();
}
contents.commit(driveApiClient, null, new ExecutionOptions.Builder().setConflictStrategy(ExecutionOptions.CONFLICT_STRATEGY_OVERWRITE_REMOTE).build())
在提交的状态回调中,我获得了成功。
下次打开文件时,文件为空,元数据中的大小为 0。
我做错了什么?
刚刚做了一个快速测试。一定要在提交前关闭 OutputStreamWriter
- writer.close()
;否则,您将得到一个空文件。