Я использую Google Drive Android API (как часть сервисов Google Play) для загрузки файлов в облако.
Для подключения клиента я использую следующий код (упрощенный):
apiClient = new GoogleApiClient.Builder(context)
.addApi(Drive.API)
.setAccountName(preferences.getString("GOOGLE_DRIVE_ACCOUNT", null))
.build();
ConnectionResult connectionResult = apiClient.blockingConnect(SERVICES_CONNECTION_TIMEOUT_SEC, TimeUnit.SECONDS);
if (!connectionResult.isSuccess()) {
throw new ApiConnectionException(); //our own exception
}
Чтобы загрузить файл, я использую следующий код (упрощенный):
DriveApi.ContentsResult result = Drive.DriveApi.newContents(apiClient).await();
if (!result.getStatus().isSuccess()) {
/* ... code for error handling ... */
return;
}
OutputStream output = result.getContents().getOutputStream();
/* ... writing to output ... */
//create actual file on Google Drive
DriveFolder.DriveFileResult driveFileResult = Drive.DriveApi
.getFolder(apiClient, folderId)
.createFile(apiClient, metadataChangeSet, result.getContents())
.await();
Все работает так, как ожидалось, за исключением одного конкретного пользовательского случая. Когда пользователь удаляет наше приложение из «Подключенных приложений» (с помощью приложения «Настройки Google»), этот код по-прежнему возвращает успешные результаты для всех вызовов. Хотя файл никогда не загружается на Google Диск.
Подключение к сервисам Google Play также проходит успешно.
Это баг API или можно как-то обнаружить, что пользователь отключил приложение?
this code still returns successful results for all invocations
означает, чтоapiClient.blockingConnect(...)
по-прежнему возвращает успешные результаты? Или толькоnewContents
иgetContents().getOutputStream()
? - person ben75   schedule 09.06.2014apiClient.blockingConnect(...)
также возвращает успешный результат. - person Dmitry Zaytsev   schedule 09.06.2014listChildren()
илиqueryChildren()
и проверить, присутствует ли файл в результатах? - person koral   schedule 09.06.2014onDisconnected()
не вызывается в объекте обратного вызова? - person matiash   schedule 11.06.2014