【问题标题】:AccountManager without a SyncAdapter?没有 SyncAdapter 的 AccountManager?
【发布时间】:2010-06-21 13:56:33
【问题描述】:

我正在尝试使用 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)

【问题讨论】:

    标签: android accountmanager


    【解决方案1】:

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

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

    编辑: 我想这就是解释,我会试试看。

    "[...] 崩溃是由 Android 代码中未记录的假设引起的 处理帐户和同步。它们非常密切相关。它 原来是“Accounts and Sync”设置插件获取后 系统上的帐户,使用内容服务扫描 系统上实现意图的服务 “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 的参考实现不同。

          我认为您的异常是由其他原因引起的......

          【讨论】:

          • HI,有一个SyncAdapter,一个名为ContactsSyncAdapterService的类
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多