it-swarm.com.de

com.google.Android.gms.common.api.ApiException: 17: API: Drive.API_CONNECTIONLESS ist auf diesem Gerät nicht verfügbar

Hier ist die Geschichte. Ich hatte Google Drive Android SDK (8.1.0) vor etwa drei Jahren in meine App ( AnyCopy ) integriert. Ich folgte dem Tutorial, um es richtig einzurichten, einschließlich der Eingabe von Anmeldeinformationen und des API-Schlüssels. Alles hat gut funktioniert. Ich konnte meine Daten ohne Probleme sichern und wiederherstellen. Es funktioniert auch heute noch gut, wenn ich es von Google Play herunterlade.

Vor kurzem habe ich versucht, AnyCopy umzubestimmen und das neueste Google Drive Android SDK (Google Play Service-Versionsnummer 12.0.1) in meine App zu integrieren, und es ist ein merkwürdiger Fehler in der Meldung aufgetreten 

Java.util.concurrent.ExecutionException: com.google.Android.gms.common.api.ApiException: 17: API: Drive.API_CONNECTIONLESS ist auf diesem Gerät nicht verfügbar . unter com.google.Android.gms.tasks.Tasks.zzc (unbekannte Quelle) unter com.google.Android.gms.tasks.Tasks.await (unbekannte Quelle)

Allerdings, wenn ich in Google Console einen neuen Berechtigungsnachweis mit einem anderen Signaturschlüssel erstellt. Und das Problem ist gelöst. Mir ist klar, dass das Problem von der Konfiguration der Anmeldeinformationen herrührte. Ich konnte jedoch nicht herausfinden, wie ich das Problem beheben kann, da es sich möglicherweise um einen Rückwärtskompatibilitätsfehler des Google Drive SDK handelt. Hat noch jemand anderes auf dieses Problem gestoßen? Jeder Vorschlag wird sehr geschätzt.

12
Tony Thompson

Ich hatte den gleichen Fehler. Ich habe ein neues Projekt erstellt und die Anmeldeinformationen für die Google-API erhalten, habe aber vergessen, die Google Drive-API zu aktivieren. Zum Dashboard zu gehen und die Google-Laufwerk-API zu aktivieren, hat den Trick geleistet. Hoffe, das hilft.

2
KoM

Die neue API, die Sie verwenden, hat immer noch die Instanzen und Ordner der älteren Version. Sie können dies einfach überprüfen, indem Sie von Android zu Ihrem Projekt und zu externen Bibliotheken wechseln. Wenn die ältere Version dieser API vorhanden ist, versuchen Sie es mit Refraktor, reinigen Sie das Projekt und erstellen Sie es neu. Ich hoffe, es passt zu Ihrem Anliegen. Sicher ein Problem mit der Rückwärtskompatibilität.

0
Jay Patel

Was in meinem Fall passiert ist, war, dass ich einen Berechtigungsbereich festgelegt habe, der sich von dem Umfang unterscheidet, den das DriveClient object unterstützt, das nur drives.file und drive.appfolder ist, wie Sie sehen Hier :

Hinweis: Die Google Drive Android-API unterstützt derzeit nur drive.file und drive.appfolder-Berechtigungsbereiche. Wenn Ihre Bewerbung zusätzliche Berechtigungen oder Funktionen, die noch nicht im Laufwerk verfügbar sind Android-API müssen Sie den Java-Client von Google APIs verwenden.

In meinem Fall habe ich versucht, den vollständigen Zugriff auf das Laufwerk zu verwenden, und der Fehler hatte eigentlich keinen Zusammenhang mit dem Verbindungstyp. Ich fand es, indem ich mir die CommonStatusCodes-Klasse ansehe.

Um dies zu lösen, habe ich einfach alle anderen Bereiche entfernt und nur drives.file ..__ verlassen. Sie können oder auch nicht: D müssen den Zugriff widerrufen und die Benutzer von Ihrer App abmelden und sich erneut anmelden und fordern Sie erneut Zugriff auf ihr Google-Laufwerk an.

Wenn Sie Firebase verwenden, sieht Ihr Code ein bisschen so aus:

AuthUI.IdpConfig.GoogleBuilder()
                    .setScopes(Arrays.asList(Scopes.DRIVE_FILE))
                    .build()

Wenn Sie jedoch gerade den GoogleSignInClient verwenden, würde es so aussehen:

GoogleSignInOptions signInOptions =
            new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                    .requestScopes(Drive.SCOPE_FILE)
                    .build();
GoogleSignIn.getClient(this, signInOptions)

Wenn Sie mehr als nur auf die Dateien files und appfolder zugreifen möchten, können Sie die DriveClient-Klasse nicht verwenden und müssen entsprechend ihren Dokumenten Verbindung und Autorisierung mit Google herstellen APIs Java Client.

Ich hoffe wirklich, dass dir das hilft, ich habe leider einige Stunden bis zur Kenntnis genommen.

Vielen Dank,

0
Denis Raison