1

Ich weiß in 8.0, AutoFill ist bevorzugt, aber ich möchte den Google Smart Lock speichern Dialog erzwingen. Während der Umsetzung bekomme ich diesen Fehler:Google Smart Lock speichern Dialog nicht zugänglich in Android Oreo

{Status{statusCode=The Credentials API's save confirmation dialog has been disabled to avoid conflicts with the Android Autofill feature. This choice may be overridden via AuthCredentialsOptions.Builder.forceEnableSaveDialog()., resolution=null}} 

aber im Android docs, gibt es keine Methode dafür ist. Nein, wo in einer Google-Suche oder einer Suche in den Dokumenten kann ich diese forceEnableSaveDialog() Methode finden.

Kann jemand diesen Dialog auf 8.0 Geräten erzwingen? Ich möchte konsistentes Verhalten in meiner App über verschiedene Versionen hinweg.

Snippet SaveCredentials Code:

mCredentialsApiClient = new GoogleApiClient.Builder(Xamarin.Forms.Forms.Context) 
                     .AddConnectionCallbacks((obj) => 
                     { 
                      var credendial = new Credential.Builder(userName).SetPassword(password).Build(); 

                      Auth.CredentialsApi.Save(mCredentialsApiClient, credendial).SetResultCallback(new ResultCallback<IResult>((obj2) => 
                      { 
                       Print("Saved"); 
                       if (obj2.Status.IsSuccess) 
                       { 
                        Print("Credentails successfully saved with Google Smart Lock"); 
                       } 
                       else if (obj2.Status.StatusCode == CommonStatusCodes.ResolutionRequired) 
                       { 
                        obj2.Status.StartResolutionForResult(CrossCurrentActivity.Current.Activity, obj2.Status.StatusCode); 
                       } 
                      })); 
                     }) 
                     .AddOnConnectionFailedListener(NotConnected) 
                     .AddApi(Auth.CREDENTIALS_API) 
                     .Build(); 
          mCredentialsApiClient.Connect(); 

Dies ist Android in Xamarin. Gleiche Methoden und alles, nur mit C#

+1

Können Sie mir den Code zeigen, den Sie gerade haben? –

+0

Ich habe ein Code-Snippet hinzugefügt, wo ich speichern kann. Der obj2.Status, der zurückgegeben wird, ist, wo diese Nachricht von – grenadier89

Antwort

3

"...there is no method for this. No where in a Google search, or a search in the docs can I find this forceEnableSaveDialog() method."

Dies ist auf das Fenster zwischen dem, wenn eine Version der Google Play-Dienste APK und die entsprechenden Client-Bibliothek freigegeben (Übersicht über die Struktur here).

In der entsprechenden Client-Version AuthCredentialOptions.forceEnableSaveDialog() wird zusammen mit der Dokumentation für die Verwendung zur Verfügung stehen. Ich werde diese Frage aktualisieren, sobald sie verfügbar ist, aber Sie können auch die Versionshinweise here ansehen.

Update 1: Die entsprechende Google Play Services-Clientbibliothek wurde veröffentlicht. Der Abschnitt "Targeting Android O und höher" von overview documentation enthält weitere Details dazu.

Update 2: In neuester Version (Version 11.8.0) AuthCredentialOptions sind veraltet, durch die neuen CredentialOptions ersetzt.

+0

AuthCredentialOptions.Builder Objekt fehlt die build() -Methode. – Nicholas

1

Die Methode wurde aus dem öffentlichen SDK für AuthCredentialsOptions.Builder fehlt und wir es behoben (siehe akzeptierte Antwort)

Aber eine wichtige Klarstellung: Autofill mit Google Passwörter Dialog speichert speichern auf die gleiche Smart Lock-Datenbank, wenn der AutoFill-Dialog angezeigt wird, müssen Sie sich nicht darum sorgen, dass die API den anderen Dialog zum Anzeigen erzwingt. Wenn Sie den Dialog über die API erzwingen, müssen Sie die AutoFill-Funktion unterdrücken. .. Benutzer sollte nicht zwei Dialoge sehen). Daten, die über einen der beiden Dialogfelder gespeichert werden, stehen für die automatische Smart Lock-Anmeldung (und umgekehrt für AutoFill) zur Verfügung. Die Daten werden über ein Google-Konto mit Chrome synchronisiert (AutoFill und API).

Da die Dialoge Daten am selben Ort speichern, haben wir das AutoFill mit Google One aktiviert, wenn der Nutzer Google als AutoFill-Manager verwendet, da er eine konsistente Erfahrung für alle Apps auf Oreo-Geräten bietet. Arbeiten an der Verbesserung von Fehlermeldungen, Dokumentation und Branding, um dies zu verdeutlichen. Entschuldigung für die Verwirrung.

Verwandte Themen