gpt4 book ai didi

android - 如何为 Android 应用程序的密码实现 Smart Lock

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:15 24 4
gpt4 key购买 nike

有人了解智能锁吗?它是如何工作的?

我想开发一个在 Android 应用程序中为密码实现 Smart Lock 的应用程序。

我正在关注 https://developers.google.com/identity/smartlock-passwords/android/ .

我已经初始化了 GoogleApiClient

 mCredentialsApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Auth.CREDENTIALS_API)
.build();

和生成的 Credential 实例

 final Credential credential = new Credential.Builder(email)
.setPassword(password)
.build();

为了使用 Credentials API 保存凭证,我使用了

Auth.CredentialsApi.save(mCredentialsClient, credential).setResultCallback(
new ResultCallback() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
// Credentials were saved
} else {
if (status.hasResolution()) {
// Try to resolve the save request. This will prompt the user if
// the credential is new.
try {
status.startResolutionForResult(this, RC_SAVE);
} catch (IntentSender.SendIntentException e) {
// Could not resolve the request
}
}
}
}
});

我的 Manifest 拥有

的权限
   <uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />

并且还在应用程序标签内添加了元数据作为

    <meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />

在 Android 应用程序中完成所有操作后,我在 Google Developer Console 上生成了项目并完成了 this link here 中提到的所有操作.

但是当我运行项目时,出现错误:

Could not resolve error.

有人在 Android 应用程序上开发过 Google 的 Smart Lock for Password 应用程序吗?

最佳答案

对我来说,Smart Lock for Passwords on Android示例项目运行良好。您可能想尝试从那里开始,看看是否有帮助。在示例代码中,save credential 实现为:

onCreate 中:

    mCredentialsApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(Auth.CREDENTIALS_API)
.build();

...在 saveCredetial 方法中:

    final Credential credential = new Credential.Builder(email)
.setPassword(password)
.build();

Auth.CredentialsApi.save(mCredentialsApiClient, credential).setResultCallback(
new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
Log.d(TAG, "SAVE: OK");
showToast("Credential Saved");
hideProgress();
} else {
resolveResult(status, RC_SAVE);
}
}
});

...主要 Activity 的 resolveResult 方法:

private void resolveResult(Status status, int requestCode) {
Log.d(TAG, "Resolving: " + status);
if (status.hasResolution()) {
Log.d(TAG, "STATUS: RESOLVING");
try {
status.startResolutionForResult(MainActivity.this, requestCode);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "STATUS: Failed to send resolution.", e);
hideProgress();
}
} else {
Log.e(TAG, "STATUS: FAIL");
showToast("Could Not Resolve Error");
hideProgress();
}
}

关于android - 如何为 Android 应用程序的密码实现 Smart Lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30593059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com