Android AccountManagerFuture getResult дает IOEXcelption при попытке получить токен авторизации - PullRequest
2 голосов
/ 19 марта 2012

Я следую Пример ник при получении токена авторизации из аккаунта Google. Я застреваю при вызове AccountManagerFuture getResult. Я работаю на своем устройстве (HTC desire) и с локальным движком приложений Google, запущенным из Eclipse. Если я подключусь к Интернету с помощью своего мобильного телефона, я смогу получить токен аутентификации. Но я хотел бы сделать это локально в автономном режиме. Вы знаете, должен ли я подключиться к Интернету, чтобы он заработал? Если нет, то не ясно, что делает метод getResult. Получает ли он токен с сервера Google где-нибудь? Спасибо.

@Override
protected void onResume() {
    super.onResume();
    Intent intent = getIntent();
    AccountManager accountManager = AccountManager.get(getApplicationContext());
    Account account = (Account)intent.getExtras().get("account");

    accountManager.getAuthToken(account, "ah", false, new GetAuthTokenCallback(), null);

}

private class GetAuthTokenCallback implements AccountManagerCallback<Bundle> {
    public void run(AccountManagerFuture<Bundle> result) {
        Bundle bundle;
        try {

            System.out.println("result.isCancelled"+result.isCancelled());
            // this prints false

                            System.out.println("result.isDone"+result.isDone());
            //this prints true


            bundle = result.getResult();
            // when getResult is called I get an IOException without further details

            Intent intent = (Intent)bundle.get(AccountManager.KEY_INTENT);
            if(intent != null) {
                    startActivity(intent);
            } else {
                onGetAuthToken(bundle);
            }
        } catch (OperationCanceledException e) {
            e.printStackTrace();
        } catch (AuthenticatorException e) {
            e.printStackTrace();
        } catch (IOException e) {

                e.printStackTrace();
        }
    }
};

03-19 13: 58: 03,933: W / System.err (1801): java.io.IOException 03-19 13: 58: 03.933: W / System.err (1801): at android.accounts.AccountManager.convertErrorToException (AccountManager.java:1419) 03-19 13: 58: 03.933: W / System.err (1801): на android.accounts.AccountManager.access $ 400 (AccountManager.java:134) 03-19 13: 58: 03.933: W / System.err (1801): на android.accounts.AccountManager $ AmsTask $ Response.onError (AccountManager.java:1280) 03-19 13: 58: 03.933: W / System.err (1801): на android.accounts.IAccountManagerResponse $ Stub.onTransact (IAccountManagerResponse.java:69) 03-19 13: 58: 03.933: W / System.err (1801): на android.os.Binder.execTransact (Binder.java:288) 03-19 13: 58: 03.933: W / System.err (1801): at dalvik.system.NativeStart.run (собственный метод)

Ответы [ 2 ]

2 голосов
/ 15 мая 2012

У меня была эта проблема, и она была вызвана тем, что мое Wi-Fi соединение умерло.Убедитесь, что вы подключены к Интернету.

0 голосов
/ 21 июня 2013

Возможно, вы используете изображение, которое не поддерживает API Google. Убедитесь, что с помощью диспетчера Android SDK у вас установлен API Google, а затем проверьте свое виртуальное устройство Android, чтобы убедиться, что вы используете API Google в качестве цели

.
...