没有SyncAdapter的AccountManager?

问题描述:

我正在尝试使用AccountManager存储帐户信息并实施了身份验证程序,但我一直收到类似下面的例外情况,导致手机崩溃。与示例代码相比,这似乎是因为我没有(或特别需要)SyncAdapter和关联的服务。使用AccountManager而不添加SyncAdapter有什么窍门?没有SyncAdapter的AccountManager?

问候

菲尔

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) 
+0

Briliiant问题 – Lyn 2011-05-20 07:06:45

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

尽管标题,我没有看到这里的任何代码SyncAdapter(独立项目),与谷歌不同的参考实现。

我认为你的异常是由别的东西造成的......

+0

HI,有SyncAdapter,一个名为ContactsSyncAdapterService类 – Lyn 2011-05-20 07:19:02

我有同样的问题。我实现了一个AccountAuthenticator,它直接在addAccount方法中添加Account,因为我不需要用户输入。

我在创建帐户后想要查看“帐户&同步”首选项屏幕时出现异常。这不是创建的原因,因为它可以与“开发工具> AccountsTester”一起使用。

编辑: 我认为这是解释,我会尝试。

“[...]的崩溃是由于在处理账户和同步Android的代码 一个无证假设引起的。他们是非常它 原来密切相关。该‘账户和同步’设置插件在系统上得到 账户后,使用内容服务来扫描 服务实现的意图 “android.content.SyncAdapter”系统。

因为我们的代码没有实现这一点,搜索出来空手 并且由于代码假设这不会发生,所以BAM,空指针 异常和崩溃。 [...]“from:http://osdir.com/ml/Android-Developers/2009-11/msg05288.html

最后,我需要添加一个SyncAdapter和一个ContentProvider。最简单的存根实现,但它似乎做的工作。我也认为我发现问题没有'牛逼发生在2.2

这是一个众所周知的问题:!http://code.google.com/p/android/issues/detail?id=5009

的NPE,因为没有相应的同步适配器被发现时