Android AccountManager API

前端之家收集整理的这篇文章主要介绍了Android AccountManager API 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在努力了解Android AccountManager API.据我所知,我可以使用blockingGetAuthToken方法并指定Android是否应为用户提供通知以允许或拒绝该请求.另一种可能性是使用getAuthToken并检查是否返回了KEY_INTENT.如果是这种情况,我可以启动一个新的活动,用户可以在其中确认我的请求.

我的问题是我想从Service内调用这两种方法之一.用户做出决定后,是否有机会获得回调?

谢谢你的帮助

最佳答案
如果您在用户做出决定后想要回调,则最好使用异步版本:

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);

猜你在找的Android相关文章