是否可以在.aar库中使用AccountAuthenticator和帐户管理?

问题描述 投票:0回答:1

我正在尝试做的-是将所有帐户管理例程分离到一个单独的.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吗?

android aar accountmanager android-authenticator
1个回答
0
投票

从技术上讲,为了可重用性,将AuthenticatorService和Authenticator类保存在单独的Android-Library模块中,在android应用程序中使用它时,不会引起任何问题。您的问题是在两个应用程序之间共享数据,而不是多模块性。为此,您可以使用第三方库或平面文件(无论您需要什么)来创建共享的本地数据库。

Android提供了一些有用的API,允许IPC用于android应用程序:

如果数据量很小,则可以使用SharedPreferences API,但是它会为应用程序可以贡献多少数据设置CAP。由于SharedPreferences本质上是Global,因此我不建议在此存储敏感数据。

[如果您希望某个应用公开某些数据,请研究一下android体系结构如何在每个应用内提供一个“导出”目录,您可以在其中存储任何数据,而其他应用可以安全地读取该目录。删除应用程序将清除此“导出”目录中存在的所有数据。

© www.soinside.com 2019 - 2024. All rights reserved.