【问题标题】:getAuthToken doesn't call AccountManagerCallbackgetAuthToken 不调用 AccountManagerCallback
【发布时间】:2023-03-24 21:41:01
【问题描述】:

一旦用户验证我的应用程序以查看和管理邮件,我的代码就可以工作。

或者看起来像这样:

但是,第一次(对于第一个请求),Google 的对话框显示(上图)并要求用户进行身份验证,然后即使用户选择“确定”也不会调用 AccountManagerCallback(即使“取消”也应该返回一些价值)

这是我的代码:

AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken(mAccount, "oauth2:https://mail.google.com/", null, mActivity, new OnTokenAcquired(), null);

和AccountManagerCallback代码:

private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
        @Override
        public void run(AccountManagerFuture<Bundle> result) {
               // Do something useful
            }
        }
    }

再次,一旦用户在上面的对话框中选择“确定”,我的代码就可以工作(AccountManagerCallback 确实被调用)。然后再次调用'getAuthToken()'方法。


在 Kitkat (Samsung Tab Pro 8.4) 上发现上述问题,但在 Jelly Bean (Galaxy Nexus) 上未发现。不确定是 Kitkat 与 Jelly Bean 问题还是三星与 Nexus 问题。

如果是错误,是否有解决方法?

【问题讨论】:

    标签: android gmail


    【解决方案1】:

    KitKat 有所不同。 Google 对话框显示为单独的活动。 尝试使用类似的东西:

    AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken(mAccount, "oauth2:https://mail.google.com/", null, false, new OnTokenAcquired(), null);
    

    然后

    private class OnTokenAcquired implements AccountManagerCallback<Bundle> {
    
        @Override
        public void run(AccountManagerFuture<Bundle> result) {
               // Do something useful
                Bundle bundle;
                bundle = result.getResult();        
    
                Intent launch = (Intent)bundle.get(AccountManager.KEY_INTENT);
                if (launch != null) {                   
                    launch.setFlags(0);
                    mainActivity.startActivityForResult(launch, AUTHORIZATION_CODE);    
            }
        }
    }
    

    然后

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == RESULT_OK) {
            if (requestCode == AUTHORIZATION_CODE) {
                // request token here again 
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 2017-01-25
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 2011-09-01
      • 2013-06-23
      相关资源
      最近更新 更多