Я играю с API Google Диска для Android, и я столкнулся с проблемой. В частности, я заинтересован в App Folder для сохранения и синхронизации данных приложений на разных устройствах. Я могу запросить, существует ли файл с определенным именем файла в папке приложения. я могу получить файл черезПочему OutputStream, возвращаемый DriveContents.getOutputStream(), не действует так, как ожидалось?
driveFile = metadata.getDriveId().asDriveFile();
Я могу открыть файл с помощью
driveFile.open(mGoogleApiClient,
DriveFile.MODE_WRITE_ONLY,
new DownloadProgressListener() {...})
.setResultCallback(...);
И в последующем обратного вызова я могу получить OutputStream с:
OutputStream outputStream = dcr.getDriveContents().getOutputStream();
Но проблема в том, что если я попробуйте написать, что OutpustStream ничего не записывается в файл. Я использовал такой код:
OutputStream outputStream = result.getDriveContents().getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(outputStream);
try {
writer.write("Just some strinh I want to save to Google Drive.");
} catch (IOException e) {
throw new RuntimeException(e);
}
Status status = dcr.getDriveContents().commit(mGoogleApiClient, null).await();
Использование этого OutputStream в GoogleDrive ничего не записывается. Но если я использую код от https://developers.google.com/drive/android/files#making_modifications, он работает так, как ожидалось.
скопированный фрагмент этого кода от Google для справки:
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();
}
Почему OutputStream на DriveContents.getOutputStream подъезд() не работает, как ожидалось? Почему это даже предусмотрено? Или я чего-то не хватает? Версия библиотеки Google Play Services - r29.