AccountManager без SyncAdapter?
Я пытаюсь использовать 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)
Ответы
Ответ 1
У меня та же проблема. Я внедрил AccountAuthenticator, который добавляет учетную запись непосредственно в метод addAccount, потому что мне не нужен пользовательский ввод в моем случае.
Я получаю Exception после создания учетной записи и хочу просмотреть экран настроек "Учетные записи и синхронизация". Это не связано с созданием, потому что оно работает с "Dev Tools > AccountsTester".
изменить:
Я думаю, что это объяснение, я попробую.
"[...] Авария вызвана недокументированным допущением в коде Android
который обрабатывает учетные записи и синхронизацию. Они очень тесно связаны. Это
оказывается, что плагин настроек "Учетные записи и синхронизация" после получения
учетные записи в системе, использует службу контента для сканирования
услуги в системе, которые реализуют намерение
"Android.content.SyncAdapter".
Поскольку наш код не реализует это, поиск пришел с пустыми руками
и поскольку код предполагал, что этого никогда не произойдет, BAM, нулевой указатель
исключение и авария. [...] "из: http://osdir.com/ml/Android-Developers/2009-11/msg05288.html
Ответ 2
В итоге мне нужно было добавить SyncAdapter и ContentProvider. Просто самые строгие реализации, но, похоже, это работа. Я также думаю, что обнаружил, что проблема не возникает на 2.2
Ответ 3
Это известная проблема: http://code.google.com/p/android/issues/detail?id=5009
NPE возникает, потому что не найдено соответствующего адаптера синхронизации.
Ответ 4
http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1/
Несмотря на заголовок, я не вижу никакого SyncAdapter в коде здесь (автономный проект), в отличие от эталонной реализации Google.
Я думаю, что ваше исключение вызвано чем-то другим...