android开发(39) 使用android系统的账户中心管理账
来源:互联网 发布:淘宝店铺如何靠前 编辑:程序博客网 时间:2024/06/15 14:09
加上这个,我们的app立马就高大上了,如何做到呢?
实现步骤
1. 继承 AbstractAccountAuthenticator 实现 一个 自己的 账户认证器
2. 继承自 service,实现一个服务,该服务使用上一步的 账户认证器
3. 继承 AccountAuthenticatorActivity ,实现 自定义的 登录页面。
知识准备
你需要了解 上面积个类的知识,和accountManager,我翻译了这几个类的概述,参考我前几篇文章。
分析
如果被系统发现?
自定义的服务代码如下:
<service android:name=".MyAuthenticatorService" android:exported="true" > <intent-filter> <action android:name="android.accounts.AccountAuthenticator" /> </intent-filter> <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator" /> </service>
我们看到,这个service 指定了过滤器为 android.accounts.AccountAuthenticator,这是个系统调用的 action。
自定义 认证器 做了什么?
我们需要在定义认证器里实现 它的 addAccount 和 getAuthToken 方法。
addAccount方法: 在api里解释说,在 添加账户时,需要从用户收集认证信息(账户名和密码),需要返回一个intent,以打开一个activity,这个activity就是我们登陆页了。我们需要在登录页里处理登录的逻辑实现,并使用AccountManager记录下 登录成功的用户信息,并保存在账户中心。
getAuthToken方法: 获得auth Token ,这是一个授权标记,有些地方翻译为“令牌”,就是从服务端返回的字符串,指示了登录成功。很多系统不在本地(手机)保存真实的密码,配合auth token 来显示一次登录认证,后续的操作请求都携带auth token作为身份令牌。
@Override public Bundle addAccount(AccountAuthenticatorResponse response, String accountType, String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException { // 需要实现 Log.v(TAG, "addAccount()"); final Intent intent = new Intent(mContext, LoginActivity.class); intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); final Bundle bundle = new Bundle(); bundle.putParcelable(AccountManager.KEY_INTENT, intent); return bundle; } @Override public Bundle getAuthToken(AccountAuthenticatorResponse response, Account account, String authTokenType, Bundle options) throws NetworkErrorException { // 需要实现 return null; }
具体实现代码
可以到我的云盘下载: http://yunpan.cn/cAIvcxDHZjrIS 访问密码 d8f7
- android开发(39) 使用android系统的账户中心管理账
- Android新浪微博开发(一)OAnth认证及账户管理、sdk的使用
- android系统账户管理(AccountManagerService+AccountAuthenticator)
- Android特色开发之账户管理
- Android特色开发之账户管理
- Android特色开发之账户管理
- Android账户管理
- android 账户管理实现
- android 账户管理
- android 账户管理实现
- Android账户系统相关
- 如何让您的新系统使用已存在的认证中心的账户
- 简单的账户管理系统
- android 账户管理和同步机制
- 使用命令行开发管理Android
- Android 使用 DownloadManager 管理系统下载任务的方法
- Android 使用 DownloadManager 管理系统下载任务的方法
- Android 使用 DownloadManager 管理系统下载任务的方法
- 使用CocoaPods开发并打包静态库
- andrdoi示例项目SampleSyncAdapter分析
- Android文档 - 账户管理器概述
- std::ios::sync_with_stdio(false);
- Android训练课程(Android Training) - NFC基础
- android开发(39) 使用android系统的账户中心管理账
- Fatal signal 11 (SIGSEGV) at 0x00000014 (code=1), thread 29925 (cloud.diversion)
- android开发(40) 初试 Volley - GoogleI02013上的“快速,简单的网络通讯库”
- java的引用类型所占用的内存空间
- spring-boot 初试
- HDU 1285 确定比赛名次
- 【AHOI2013】【BZOJ3238】差异
- 求无权图的最大匹配---匈牙利算法
- 每日一题(7)——0-1背包问题(动态规划)