- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我们可以使用 Accountmanager.addAccountExplicitly()
创建包含所有参数的帐户时,为什么我们使用 Accountmanager.addAccount()
。
我用谷歌搜索并发现当我们使用 Accountmanager.addAccount()
时它会触发 AbstractAccountAuthenticator
addAccount
事件,但有什么意义呢?为什么我们应该使用 addAccount 方法?
已更新
我们可以这样创建账户:
Account account = new Account(accountname, accountType);
mAccountManager.addAccountExplicitly(account, accountPassword, null);
最佳答案
经过多次尝试,我终于找到了!
账户管理器.addAccount() 和Accountmanager.addAccountExplicitly() 是非常不同的方法!
当您调用 Accountmanager.addAccount() 时,它会调用与您的 AbstractAccountAuthenticator 中相同的方法,您可以处理发生的事情。另一方面,当用户转到电话设置/帐户并选择您的自定义帐户类型并按“添加帐户”时,此方法将调用。所以我处理帐户类型和许多东西,并将用户引导至登录/注册页面。
public class MyAuthenticator extends AbstractAccountAuthenticator {
@Override
public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException {
final Intent intent = new Intent(mContext, DirectLogin.class);
intent.putExtra(Constants.ARG_ACCOUNT_TYPE, accountType);
intent.putExtra(Constants.ARG_AUTH_TYPE, authTokenType);
intent.putExtra(Constants.ARG_IS_ADDING_NEW_ACCOUNT, true);
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
final Bundle bundle = new Bundle();
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
return bundle;
}
然后在我的 Activity 中,用户选择创建帐户或登录。登录或注册后,用户从服务器获取 token 并完成操作,最后我使用 Accountmanager.addAccountExplicitly()
来添加帐户。
String accountName = "name";
String accountPassword = "password";
final Account account = new Account(accountName, "account_type");
AccountManager mAccountManager = AccountManager.get(getBaseContext());
String authToken = intent.getStringExtra(AccountManager.KEY_AUTHTOKEN);
String refreshToken = intent.getStringExtra(AccountManager.KEY_USERDATA);
String authTokenType = AccountGeneral.ACCOUNT_TYPE;
mAccountManager.addAccountExplicitly(account, accountPassword, null);
mAccountManager.setAuthToken(account, authTokenType, authToken);
mAccountManager.setUserData(account, "refreshToken", refreshToken);
关于android - Accountmanager.addAccount() 与 Accountmanager.addAccountExplicitly(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353277/
我关注了 description添加我的同步适配器。 但是有一个小错误:-( 当我打开设置 -> 帐户 -> 添加帐户并选择我的帐户时,我收到此错误消息 java.lang.IllegalArgume
当我们可以使用 Accountmanager.addAccountExplicitly() 创建包含所有参数的帐户时,为什么我们使用 Accountmanager.addAccount()。 我用谷歌
我正在关注 tutorial用于将用户帐户添加到 Android AccountManager。 在我的主要 Activity 中,我有以下方法: private void addNewAccount
在我的应用程序中,登录后有一个帐户创建部分,通常用于将应用程序数据与远程数据同步。 但如果手机处于不稳定状态,它不会创建帐户并且 AccountManager.addAccount 显式返回 fals
当我尝试调用 addAccount 方法时,这给我带来了错误,说我尝试调用它的行上需要 .class。 我正在尝试进行一项分配,据此我应该创建一个名为 addAccount 的方法,该方法接受两个参数
我是一名优秀的程序员,十分优秀!