Ответ 1
У меня была такая же ошибка. Я создал новый проект и получил учетные данные для API Google, но забыл включить API Диска Google. Переход на панель инструментов и включение API-интерфейса google сделали трюк. Надеюсь, это поможет.
Вот история. Я включил Google Диск Android SDK (8.1.0) в свое приложение (AnyCopy) около трех лет назад. И я последовал за учебником, чтобы правильно настроить, включая добавление учетных данных и ключ api. Все сработало хорошо. Я мог бы без проблем создавать резервные копии и восстанавливать свои данные. Даже сегодня он работает нормально, если я загружу его из Google Play.
Недавно я пытался реорганизовать AnyCopy и интегрировать новейший Google Android Android SDK (версия Google Play версии 12.0.1) в свое приложение и испытываю странную ошибку с сообщением
java.util.concurrent.ExecutionException: com.google.android.gms.common.api.ApiException: 17: API: Drive.API_CONNECTIONLESS не доступен на этом устройстве. в com.google.android.gms.tasks.Tasks.zzc (Неизвестный источник) в com.google.android.gms.tasks.Tasks.await (Неизвестный источник)
Однако, если я создаю новые учетные данные в Консоли Google с другим ключом подписи. И проблема решена. Я понимаю, что проблема связана с конфигурацией учетных данных. Однако я не мог понять, как его решить, поскольку это может быть ошибка обратной совместимости SDK Google Drive. Кто-нибудь еще сталкивался с этой проблемой? Любое предложение будет высоко оценено.
У меня была такая же ошибка. Я создал новый проект и получил учетные данные для API Google, но забыл включить API Диска Google. Переход на панель инструментов и включение API-интерфейса google сделали трюк. Надеюсь, это поможет.
В новом API, который вы используете, все еще есть экземпляры и папки более старой версии. Вы можете проверить, переключившись с Android на ваш проект и внешние библиотеки. Если есть старая версия этого api, попробуйте рефрактор и очистите проект и перестройте его. Надеюсь, это вам подходит. Несомненно, проблема обратной совместимости.
Что случилось в моем случае, так это то, что я устанавливал область полномочий, отличную от областей, которые поддерживал объект DriveClient, это только файлы drive.file и drive.appfolder, как вы видите здесь:
Примечание. В настоящее время API Android на Google Диске поддерживает только области авторизации drive.file и drive.appfolder. Если вашему приложению требуются дополнительные разрешения или функции, недоступные в API Android для Android, вы должны использовать Java API Java API.
В моем случае я пытался использовать полный доступ к диску, и ошибка не была действительно связана с типом соединения. Я нашел его, посмотрев на класс CommonStatusCodes.
Чтобы решить это, я просто удалил все остальные области и оставил только файл drive.file. Вы можете или не можете: D, нужно отменить доступ и вывести пользователей из вашего приложения и снова войти в систему и снова запросить доступ к их Google Drive.
Если вы используете firebase, ваш код будет выглядеть примерно так:
AuthUI.IdpConfig.GoogleBuilder()
.setScopes(Arrays.asList(Scopes.DRIVE_FILE))
.build()
Но если вы используете только прямой файл GoogleSignInClient, это будет выглядеть так:
GoogleSignInOptions signInOptions =
new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestScopes(Drive.SCOPE_FILE)
.build();
GoogleSignIn.getClient(this, signInOptions)
Если вам нужно больше, чем просто доступ к файлам и папке приложений, вы не сможете использовать класс DriveClient и, согласно их документам, необходимо будет подключиться и авторизировать с помощью API-интерфейсов API Google API.
Я действительно надеюсь, что это поможет, я потерял несколько часов, пока не заметил, что, к сожалению.
Спасибо,