我刚刚意识到,当我为 Android 应用程序进行重构时,smartlock api 不允许我将 Fragment 传递给 ResolvingResultCallbacks 对象。
API 只允许我将 Activity 作为上下文传递,这意味着我需要在 Activity 的 onActivityResult() 方法而不是 Fragment 方法中处理凭据结果。但是在我们应用程序的当前设计中,我们希望 Fragment 处理智能锁逻辑。
这是我的保存代码:
Auth.CredentialsApi.save(mSmartLockApiClient, credential).setResultCallback(
new ResolvingResultCallbacks<Status>(mActivity, RC_CREDENTIALS_SAVE) {
@Override
public void onSuccess(Status status) {
mSmartLockSaveCallBack.onSuccess();
}
@Override
public void onUnresolvableFailure(Status status) {}
});
实际上,对于请求凭据,我遇到了同样的问题,api 没有提供传递片段以启动解析的方法。但我找到了解决方法:
if (status.hasResolution()) {
mFragment.startIntentSenderForResult(
status.getResolution().getIntentSender(),
RC_CREDENTIALS_READ,
null,
0,
0,
0,
null);
}