我知道在8.0中,自动填充是首选,但我想强制使用Google Smart Lock保存对话框。实施时我得到了这个错误:
{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}}
但在Android docs中,没有方法可以做到这一点。在Google搜索中没有位置,或者在文档中搜索我可以找到此forceEnableSaveDialog()
方法。
有谁知道如何在8.0设备上强制使用此对话框?我想在不同版本的应用程序中保持一致的行为。
SaveCredentials代码片段:
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();
这是Xamarin中的Android。相同的方法和一切,只需使用C#
答案 0 :(得分:3)
&#34; ...没有办法解决这个问题。在Google搜索中没有位置,或者在文档中搜索我可以找到这个forceEnableSaveDialog()方法。&#34;
这是因为发布了Google Play服务版APK及其相应的客户端库(结构概述here)之间的窗口。
在相应的客户端版本AuthCredentialOptions.forceEnableSaveDialog()
中将提供有关其使用的文档。我会在问题可用后更新此问题,但您也可以查看发布说明here。
更新1:相应的Google Play服务客户端库已发布。 overview documentation&#34;定位Android O及以上版本&#34;部分有更多细节。
更新2:在最新版本(版本11.8.0)中,AuthCredentialOptions
已被弃用,取而代之的是新版CredentialOptions
。
答案 1 :(得分:1)
AuthCredentialsOptions.Builder的公共SDK中缺少该方法,我们修复了它(请参阅接受的答案)
但更重要的澄清:使用Google自动填充保存对话框将密码存储到同一个Smart Lock数据库,因此如果自动填充对话框显示,那么您不必担心使用用于强制显示其他对话框的API(事实上,如果您通过API强制执行对话,请确保禁止自动填充...用户不应该看到两个对话框)。通过任一对话框保存的数据将可用于Smart Lock自动登录(反之亦然,用于自动填充),数据通过Google帐户与Chrome同步(自动填充和API)。
由于对话框将数据存储到同一个地方,因此当用户将Google用作自动填充管理器时,我们选择向Google自动填充显示,因为它将为Oreo设备上的所有应用提供一致的体验。致力于改进错误消息,文档和品牌以澄清这一点。对不起,感到困惑。