我试图编写一个Authenticator组件,并且我不断得到一个我无法解决的运行时异常。我实现的只是addAccount()方法。我尝试通过Android的设置添加帐户 - >帐户 - >新增帐户。我选择在列表中成功显示的帐户类型。启动Authenticator并调用addAccount()。它不会成功启动Authentication Activity,并抛出此异常:
01-28 17:38:57.599 886-1466/? W/Binder﹕ Caught a RuntimeException from the binder stub implementation.
java.lang.NullPointerException
at com.android.server.accounts.AccountManagerService$Session.onResult(AccountManagerService.java:2203)
at android.accounts.IAccountAuthenticatorResponse$Stub.onTransact(IAccountAuthenticatorResponse.java:59)
at android.os.Binder.execTransact(Binder.java:404)
at dalvik.system.NativeStart.run(Native Method)
Authenticator的addAccount()的实现:
final Bundle bundle = new
final Intent intent = new Intent(context, AuthenticatorActivity.class);
intent.putExtra(AuthenticatorActivity.ARG_ACCOUNT_TYPE, accountType);
intent.putExtra(AuthenticatorActivity.ARG_AUTH_TYPE, authTokenType);
intent.putExtra(AuthenticatorActivity.ARG_IS_ADDING_NEW_ACCOUNT, true);
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
return bundle;
答案 0 :(得分:0)
我刚刚解决了同样的问题,但我的解决方案可能适用于您,也可能不适用于您。
我正在使用AndroidAnnotations,我的AuthenticatorActivity
课程被注释为@EActivity
。因此,我应该使用AuthenticatorActivity_.class
构建意图(注意下划线!),这是AndroidAnnotations为我生成的类。我的原始类会有很多空变量。
将来,我必须小心谨慎,因为在构建时没有错误或警告。
我希望这对你有帮助。
顺便说一句,我找到了一个相关的AndroidAnnotations Issue,它讨论了我们必须使用生成的类名称的其他场景。还讨论了如何解决这个问题,但问题仍然存在。