AccountManager без SyncAdapter? - PullRequest
       24

AccountManager без SyncAdapter?

8 голосов
/ 21 июня 2010

Я пытаюсь использовать AccountManager для хранения информации об учетной записи и внедрил аутентификатор, но продолжаю получать исключения, подобные приведенным ниже, которые приводят к сбою телефона.По сравнению с примером кода это происходит потому, что у меня нет (или я особо не хочу) SyncAdapter и связанной службы.Есть ли хитрость в использовании AccountManager без добавления SyncAdapter?

С уважением

Фил

I/AuthenticatorActivity( 8526): onAuthenticationResult(true)
I/AuthenticatorActivity( 8526): finishLogin()
W/dalvikvm( 8108): threadid=13: thread exiting with uncaught exception (group=0x
4001b170)
E/AndroidRuntime( 8108): Uncaught handler: thread android.server.ServerThread ex
iting due to uncaught exception
E/AndroidRuntime( 8108): *** EXCEPTION IN SYSTEM PROCESS.  System will crash.
E/AndroidRuntime( 8108): java.lang.NullPointerException
E/AndroidRuntime( 8108):        at com.android.settings.ManageAccountsSettings.o
nSyncStateUpdated(ManageAccountsSettings.java:187)
E/AndroidRuntime( 8108):        at com.android.settings.ManageAccountsSettings.o
nAccountsUpdated(ManageAccountsSettings.java:244)
E/AndroidRuntime( 8108):        at android.accounts.AccountManager$10.run(Accoun
tManager.java:826)
E/AndroidRuntime( 8108):        at android.os.Handler.handleCallback(Handler.jav
a:587)
E/AndroidRuntime( 8108):        at android.os.Handler.dispatchMessage(Handler.ja
va:92)
E/AndroidRuntime( 8108):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 8108):        at com.android.server.ServerThread.run(SystemSer
ver.java:435)

Ответы [ 4 ]

7 голосов
/ 17 августа 2010

У меня такая же проблема.Я реализовал AccountAuthenticator, который добавляет учетную запись непосредственно в метод addAccount, поскольку в моем случае мне не требуется ввод данных пользователем.

Я получаю исключение после создания учетной записи и хочу просмотреть «Учетные записи»& синхронизировать "экран настроек.Это не вызвано созданием, потому что оно работает с "Dev Tools> AccountsTester".

edit: я думаю, что это объяснение, я попробую.

"[...] Сбой вызван недокументированным предположением в коде Android, который обрабатывает учетные записи и синхронизирует. Они очень тесно связаны. Оказывается, плагин настроек "Учетные записи и синхронизация" после включения учетных записейсистема использует сервис контента для поиска сервисов в системе, которые реализуют намерение «android.content.SyncAdapter».

Поскольку наш код не реализует это, поиск был произведен с пустыми руками, и посколькуКод предполагал, что этого никогда не произойдет, BAM, исключение нулевого указателя и сбой. [...] "from: http://osdir.com/ml/Android-Developers/2009-11/msg05288.html

2 голосов
/ 21 октября 2010

В конце мне нужно было добавить SyncAdapter и ContentProvider. Просто самые короткие реализации заглушки, но, похоже, это сработало. Я также думаю, что обнаружил, что проблема не возникает на 2.2

1 голос
/ 10 января 2011

Это известная проблема: http://code.google.com/p/android/issues/detail?id=5009

NPE происходит, потому что не найден соответствующий адаптер синхронизации.

0 голосов
/ 28 июня 2010

http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/

Несмотря на заголовок, я не вижу здесь никакого кода SyncAdapter (автономный проект), в отличие от справочной реализации Google.

Я думаю, что ваше исключение вызвано чем-то другим ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...