我使用如下所示的代码从AccountManager获取身份验证令牌,它在我的三星Galaxy Tab 10.1,我的联想Ideapad和我的摩托罗拉RARZ手机上完美运行但在我的Galaxy S3上失败并出现IOException。
环顾四周似乎是由于缺乏网络(例如没有wifi / 3G),但手机可以上网,我可以浏览互联网并收到电子邮件。
有关此问题的原因和解决方法的任何提示?由于Galaxy S3是最受欢迎的Android手机之一,所以我不能将其排除在外。
public class LoginActivity extends SherlockActivity implements OnItemClickListener,
AccountManagerCallback<Bundle>
{
public final static String GOOGLE_SCOPE = "oauth2:https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/plus.login";
private String mToken;
private void requestToken() {
mAccountManager.getAuthToken(mAccount, GOOGLE_SCOPE, null, this, this, null);
}
@Override
public void run(AccountManagerFuture<Bundle> result) {
Bundle bundle = null;
try {
bundle = result.getResult();
final Intent loginIntent = (Intent)bundle.get(AccountManager.KEY_INTENT);
if(loginIntent != null) {
startActivityForResult(loginIntent, AUTH_REQ_CODE);
} else {
mToken = bundle.getString(AccountManager.KEY_AUTHTOKEN);
}
} catch ( final IOException e ) {
Log.e(TAG, e.toString());
e.printStackTrace();
} catch ( final AuthenticatorException ae ) {
Log.e(TAG, ae.toString());
ae.printStackTrace();
} catch ( final OperationCanceledException oce ) {
Log.e(TAG, oce.toString());
oce.printStackTrace();
} catch ( final Exception ex ) {
Log.e(TAG, ex.toString());
ex.printStackTrace();
}
}
}
}