2017-02-20 12 views
0

Я хотел бы сохранить данные своего приложения на Google Диске, чтобы разделить его между Устройствами пользователя.Google Диск Android SDK не может записываться в папку приложения

Во-первых, если нет файла я создать в Google Drive:

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.

Что я делаю неправильно?

+0

Попробуйте закрыть 'OutputStreamWriter'. Как вы читаете файл? Откуда вы знаете, что он пуст? Вы можете перенести область из «appDataFolder», чтобы вы могли визуально проверить. Кроме того, файлы, написанные через GDAA, будут синхронизироваться с сервером через некоторое время, и это не под вашим контролем. – Cheticamp

ответ

1

Только что сделал быструю проверку. Определенно закройте OutputStreamWriter - writer.close() перед фиксацией; в противном случае вы получите пустой файл.