Android AccountManager添加了帐户,但之后消失了

时间:2017-02-20 09:53:51

标签: android login android-4.4-kitkat accountmanager

Recenlty我考虑为多个应用创建一个帐户。所以我使用了android AccountManager。 我在清单中设置了所有正确的权限,添加了authenticator.xml,创建了服务以及所有其他内容(也在清单中声明了这一点)。

我为自己创建了一个小型库/包装器,使身份验证过程更加轻松,让它在不同的应用程序中完全相同。

但现在我的情况是我的代码在一个应用程序中运行,而在另一个应用程序中运行。使用的代码完全相同。 我使用addAccountExplicitly方法添加帐户:

accountManager.addAccountExplicitly(account, password, bundle)

当我调试一行后,转到Android帐户设置屏幕,我的帐户出现了。所以我认为添加帐户不是问题。 但是当我发送广播(或任何其他代码),并退出loginActivity我创建帐户消失。所以在致电时:

AccountManager.get(context).getAccountsByType(ACCOUNT_TYPE)

返回null。就像你期望的那样,因为它在设置屏幕中不可见。

但是后来奇怪的部分,在另一个应用程序中,我使用完全相同的代码,但帐户不会被删除/删除。 当我再次调用getAccountsByType时,它将返回刚刚添加的帐户。

我错过了该应用中的某些内容吗?我试图比较一切,但没有发现任何差异。 有没有人能指出我在这方面的正确方向?

如果有任何不清楚的地方,或者您需要更多信息,请告诉我们!

非常感谢帮助!

注意:这只发生在android 4.4.2上(或者至少我注意到它在该版本中不起作用,6.0.1以上的任何其他版本都能正常工作)。

编辑:我刷新了库(.aar)包,因此两个应用程序都是相同的。现在两个应用都无法运行。当我单击登录按钮,并保存它出现在设置中的帐户,但当我在调试模式中更进一步(或只是让它继续)它再次删除帐户! 我注意到,当我继续踩到它时,它最终会(在该方法中经过10次)在build.looper函数中删除? (但我的猜测是每个类/对象/代码片段都会运行该函数)

EDIT2:看看我到底做了什么。因为我在帐户中设置了一些参数/变量。我想先删除帐户,然后重新添加(如果已有活动帐户)。 但后来我改变它实际更新这些值而不是删除整个帐户(无论如何更好),它工作了! 所以似乎android没有以正确的方式执行这些行?就像你有时会在Hibernate中得到的东西一样? 这是我现在唯一的解释。

0 个答案:

没有答案