我正在努力理解Android AccountManager API。据我所知,我可以使用blockingGetAuthToken方法,并指定Android是否应该为用户提供允许或拒绝请求的通知。另一种可能是使用getAuthToken并检查是否返回KEY_INTENT。如果是这样的话,我可以开始一个新的活动,用户可以确认我的请求。
我的问题是,我想从服务中调用这两个方法中的一个。一旦用户做出决定,是否有机会获得回调?
谢谢你的帮忙
发布于 2011-05-10 03:17:29
如果你想在用户做出决定后进行回调,最好使用异步版本:
AccountManager mgr = AccountManager.get(getApplicationContext());
Account[] accounts = mgr.getAccountsByType("com.mydomain");
// assert that accounts is not empty您将希望使用AccountManagerFuture<Bundle>来保存身份验证令牌的结果。这必须是异步的,因为Android设备可能会要求用户同时登录:
private AccountManagerFuture<Bundle> myFuture = null;
private AccountManagerCallback<Bundle> myCallback = new AccountManagerCallback<Bundle>() {
@Override public void run(final AccountManagerFuture<Bundle> arg0) {
try {
myFuture.getResult().get(AccountManager.KEY_AUTHTOKEN); // this is your auth token
} catch (Exception e) {
// handle error
}
}}
现在,您可以异步请求auth令牌:
myFuture = mgr.getAuthToken(accounts[0], AUTH_TOKEN_TYPE, true, myCallback, null);https://stackoverflow.com/questions/2846748
复制相似问题