我想做的-是将所有帐户管理例程分离到一个单独的.aar库中,以便在我的所有项目中使用它。关键是要在不同的应用程序之间共享同一帐户。 例如:我已经登录到应用程序A。应用程序A将一些身份验证数据保存到了帐户管理器中。然后,我安装与帐户管理具有相同AAR的应用B。应用B自动使用在应用A中创建的凭据。
对于第一个简单的尝试,我在AAR中为AccountManager组装了所有“ CRUD类”方法。我还在该AAR中添加了AuthenticatorService和Authenticator类,并在AAR清单中的authenticator.xml中添加了我的服务。
问题是使用我的AAR进行身份验证的应用无法创建帐户。
我一直收到“ uid XXX cannot explicitly add accounts of type: com.example.acc_type
”异常。
我已经仔细检查过,并且authenticator.xml和我的代码中的帐户类型相同。
更重要的是:如果我将AuthenticatorService,Authenticator类,authenticator.xml和Service描述从AAR移至应用程序,则一切正常!
因此,我相信这里有一些错误。确实可以在aar库中使用AuthenticatorService和Authenticator吗?
答案 0 :(得分:0)
从技术上讲,为了可重用性,将AuthenticatorService和Authenticator类保存在单独的Android-Library模块中,在android应用程序中使用它时不会引起任何问题。您的问题是在两个应用程序之间共享数据,而不是多模块性。为此,您可以使用第三方库或平面文件(无论您需要什么)来创建共享的本地数据库。
Android提供了一些有用的API,允许IPC用于android应用程序:
如果数据量很小,则可以使用SharedPreferences API,但是它会为应用程序可以贡献多少数据设置CAP。由于SharedPreferences本质上是Global,因此我不建议在此存储敏感数据。
如果您希望某个应用程序公开一些数据,请研究一下android体系结构如何在每个应用程序中允许您存储任何数据的“导出”目录,而其他应用程序可以安全地读取该目录。删除应用程序将清除此“导出”目录中存在的所有数据。