没有SyncAdapter的AccountManager?

我正在尝试使用AccountManager来存储帐户信息并实现了一个身份validation器,但我一直遇到如下所示的exception会导致手机崩溃。 与示例代码相比,这似乎是因为我没有(或特别想要)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) 

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

我在创建帐户后想要查看“帐户和同步”首选项屏幕,我会收到例外情况。 它不是由创建引起的,因为它与“Dev Tools> AccountsTester”一起使用。

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

“[…]崩溃是由Android代码中处理帐户和同步的无证假设引起的。它们密切相关。事实certificate,在系统上获取帐户后,”帐户和同步“设置插件,使用内容服务扫描系统上实现意图“android.content.SyncAdapter”的服务。

由于我们的代码没有实现这一点,因此搜索空手而来,因为代码假设这种情况永远不会发生,BAM,空指针exception和崩溃。 […]“来自: 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是因为找不到相应的同步适配器。

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

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

我认为你的exception是由别的东西造成的……