使用 AccountManager 实现系统内共享账号

tech2026-03-28  1

前言

在开发过程中我们可能遇到自家应用间共享账号的场景。例如 APP1 登录成功后,启动 APP2 时自动完成登录并与 APP1 共享账号信息。

Android 为我们提供了AccountManager 来管理账号信息。

demo 地址

共享前提

两个 app 在一个用户组内使用相同的签名(使用 debug 默认签名也可以共享)accountType 相同

原理

AccountManager是一个面向应用程序开发的组件,它提供了一套对应于 IAccountManager 协议的应用程序接口;这组接口通过Binder机制与系统服务AccountManagerService进行通信,协作完成帐号相关的操作。同时,AccountManager接收authenticators 提供的回调,以便在帐号操作完成之后向调用此帐号服务的业务返回对应的接口,同时触发这个业务对结果的处理。 - authenticators 即注册帐号服务的app; - 业务调用方 即使用authenticators提供的帐号服务的第三方,也可以是authenticator自己

摘自:Android AccountManager帐号管理(一)

使用

该项目中有两个 module ,app 对应注册账号服务的app,app1 对应使用账号服务的第三方应用

在两个应用的 manifest 中加入 <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 权限

在 app 中创建 authenticator.xml 文件,注意 accountType 的配置,这里的应用名及 icon 会在设备的 设置 -> 账号 中显示

在 app 中注册一个 action 为“android.accounts.AccountAuthenticator”的 authenticator service,引入上一步创建的 xml 文件

在 app 中创建 authenticator

创建账号

删除账号

第三方 app 获取 用户,token 等信息

关于我

我是 Flywith24,我的博客内容已经分类整理 在这里,点击右上角的 Watch 可以及时获取我的文章更新哦 😉

掘金

小专栏

Github

最新回复(0)