如何从 api <= 22 中共享同一身份验证器的多个应用调用 AccountManager 的 peekToken()

How to call AccountManager's peekToken() from several apps sharing the same authenticator in api <= 22

我创建了一个库,其中配置了所有身份验证,包括 AccountManager 的身份验证器 class。该库旨在供不同的应用程序和不同的签名证书使用。

场景如下: 设备中安装的两个导入应用程序都导入了库。我从其中之一向 AccounManager 添加一个帐户,然后从两者调用 AccountManager 的 peekAuthToken()。它适用于 api < 22(在文档中指出)但在较低的 API 中返回 SecurityException(这是预期的)。

在低版本中有什么方法可以做到这一点?

我也尝试改用 getToken,returns 一个 Future 对象,但是 future.getResult() 似乎在某些时候失败了(没有显示任何异常)并且从不 returns api <=22 和不同签名证书的结果。

有线索吗?

在authenticator.xml配置文件中加入如下att即可解决:android:customTokens="true"

它将看起来像:

我不确定启用此 att 后内部发生了什么。