gpt4 book ai didi

android - 了解 Android 身份验证中的 Intent

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:12 25 4
gpt4 key购买 nike

在处理身份验证时,我对 Android 架构有一些疑问。

假设我为需要验证的特定帐户调用 AccountManager.getAuthToken。假设身份验证由于密码错误而失败。 AbstractAccountAuthenticator 合约要求身份验证器返回一个 Bundle,其中包含处理通过 KEY_INTENT 输入的用户名/密码的 Activity

我的问题是:谁应该显示 UI? Android 是否会自动检测到 KEY_INTENT 是否存在并运行 UI,或者我的代码是否必须以 AccountManager 响应中体现的 Intent startActivity ?这同样适用于 AccountManager.addAccount,它通过 Future 接口(interface) bundle 结果。

我在哪里可以找到关于这些主题的一些教程?

谢谢

最佳答案

KEY_INTENT 存在时,系统不会自动显示 Activity 。是否开始该 Activity 取决于您。

下面是一些示例代码:

private AccountManagerCallback<Bundle> mAccountManagerCallback = new AccountManagerCallback<Bundle>() {

public void run(AccountManagerFuture<Bundle> future) {

Bundle bundle;
try {

bundle = future.getResult();
//if an intent was sent, start the required activity
if (bundle.containsKey(AccountManager.KEY_INTENT)) {
Intent intent = bundle.getParcelable(AccountManager.KEY_INTENT);

//clear the new task flag just in case, since a result is expected
int flags = intent.getFlags();
flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK;
intent.setFlags(flags);

startActivityForResult(intent, REQUEST_CODE_AUTH);

} else {
//otherwise, just get the credentials
if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN)) {
String authToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
String userMail = bundle.getString(AccountManager.KEY_ACCOUNT_NAME);
//use the credentials
}
}
}
catch(...) {
...
//handle errors, maybe retry your getAuthToken() call
}
}
}

我希望这就是您要找的,但如果我没有正确理解您的问题,请澄清。

干杯!

关于android - 了解 Android 身份验证中的 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10350542/

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