一旦用户验证我的应用程序以查看和管理邮件,我的代码就会工作。
或者看起来像这样:
但是,第一次(对于第一个请求),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(三星Tab Pro 8.4)上找到,但不能在果冻豆(Galaxy Nexus)上找到。不确定是Kitkat对Jelly Bean的问题还是三星对Nexus的问题。
如果是虫子,有办法解决吗?
最佳答案
风筝有区别。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
}
}