android账号管理与同步机制

本文介绍Android平台上的账号管理及同步机制,重点讲述了SyncAdapter的实现原理和服务端交互过程,包括账号验证、同步功能的实现步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android账号管理在手机设置的其他账户中可以找到,打开后,发现这里有许多有趣的功能,比如微信的同步通讯录、天翼云账户的一键跳转修改账户密码等,接下来,我们来讲讲他的实现思路


实验原理

  • 效果图
    这里写图片描述
  • 几个重要类描述:
    这里写图片描述
  • 重要方法、数据格式、服务端要求:
    这里写图片描述
  • 可同步的功能
    一、可同步多个功能
    SyncAdapter继承自AbstractThreadedSyncAdapter,SyncAdapter同样需要一个服务(Service)和一个同步适配器(AbstractThreadedSyncAdapter)。SyncAdapter的Service 需要在AndroidManifest里面声明一个带有Intent:android.content.SyncAdapter的Service来达到向系统注册一个具有同步功能的账户适配器(sync-adapter)。 同时,类似widget的声明方式,在meta-data中要声明一个xml,在这个xml中描述适配器绑定的账户,所要同步的区域(Authority)(如com.android.contacts,com.android.calendar com.android.email)等信息,一个适配器只能同步一个Authority,若想使一个账户同步多个Authority,可以向系统注册多个绑定同一账户的sync-adapter它可以协助管理和自动发起数据传输,也可以协调不同应用的同步操作。
    二、可同步功能
    可以实现的功能有点多,email、calendar、contacts…所有跟服务端的同步服务

实验步骤讲解

Account验证

1)首先是class Authenticator extends AbstractAccountAuthenticator ,如图,该类是账号验证类
其中addAccount方法用来定义需要增加账号时的操作,如调用AuthenticatorActivity来进行账号的添加认证。
可以使用冒号来定义对齐方式:
这里写图片描述
(Authenticator.java)

2)在AuthenticatorActivity.java中定义了handleLogin(),点击添加按钮后,handleLogin()将ui中的用户名和密码取得,试图通过网络取服务端认证。如图所示。
这里写图片描述
这里写图片描述
(AuthenticatorActivity.java)

3)NetworkUtilities.java中的public static boolean authenticate(String username,String password)方法展示了通过网络验证的具体流程。
得到服务端结果后,在sendResult()中通过handle.post调用来实现onAuthenticationResult()在AuthenticationActivity中的运行。onAuthenticationResult()判断验证通过则结束AuthentcationActivity,否则报错并请求重新验证。如图所示。
这里写图片描述
(NetworkUtilities.java)

同步功能

4)Account的验证完毕后,就生成了账号,可以开始使用同步功能了。同步的主要逻辑在public class SyncAdapter extends AbstractThreadedSyncAdapter中实现。
(以同步通讯录为例)onPerformSync中的执行流程中,使用NetworkUtilities.syncContacts将本地通讯录更新至服务端,并获得服务端的修改。如图所示
这里写图片描述
这里写图片描述
(SyncAdapter)

Account和SyncAdapter及其Service和xml定义之间的关系

这里写图片描述

参考

1)http://blog.youkuaiyun.com/inconsolabl/article/details/48054341
2)http://www.oschina.net/question/54100_38786
3)http://blog.youkuaiyun.com/robertcpp/article/details/51353296

源码

自行搜索SampleSyncAdapter,github一堆

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值