Android开发之帐户管理
android.accounts主要包括了集中式的帐户管理API,
AccountManagerCallback,
AccountManagerFuture,
OnAccountsUpdateListener,
AbstractAccountAuthenticator,
Account,
AccountAuthenticatorActivity,
AccountAuthenticatorResponse,
AccountManager,
AuthenticatorDescription,
示例学习:添加多个帐户来集中管理
1. 在AndroidManifest.xml文件中授权,以及确定API lever为5,
<uses-sdk android:minSdkVersion=”5” />
<uses-permission android:name=”android.permission.MANAGE_ACCOUNTS”/>
<uses-permission android:name=”android.permission.ACCOUNT_MANAGER”/>
<uses-permission android:name=”android.permission.GET_ACCOUNTS”/>
<uses-permission android:name=”android.permission.AUTHENTICATE_ACCOUNTS”/>
2. 在Activity中,得到AccountManager对象
AccountManager accountManager = AccountManager.get(this);
AccountManager中的常用方法
addAccount,
addOnAccountsUpdatedListener,
removeOnAccountsUpdatedListener,
clearPassword,
getAccounts,
getAccountsByType,
getPassword,
getUserData,
setPassword,
removeAccount,
将指定类型的帐户信息全部列出来
Account[] accounts = accountManager.getAccountsByType(xxx);
for(Account account : accounts) {
String name = account.name;
String type = account.type;
}
如何将帐户信息添加到帐户管理器中
Activity self = this;
…
String server, username, password, type;
…
Account account = new Account(name, type);
Bundle userdata = new Bundle();
userdata.putString(“server”, server);
AccountManager am = AccountManager.get(self);
// 向帐户管理器中添加一个帐户
if(am.addAccountExplicitly(account, password, userdata)) {
Bundle result = new Bundle();
result.putString(AccountManager.KEY_ACCOUNT_NAME, username);
result.putString(AccountManager.KEY_ACCOUNT_TYPE, type);
setAccountAuthenticatorResult(result);
}
// 添加一个帐户服务(Service)和一个验证器(AbstractAccountAuthenticator)
1. 构建res/xml/authenticator.xml
<?xml version=”1.0” encoding=”utf-8”?>
<account-authenticator xmlns:android=”http://schemas.android.com/apk/res/android”
android:accountType=”com.txrj.AccountType”
android:icon=”@drawable/icon”
android:smallIcon=”@drawable/icon”
android:label=”@string/account_label”
android:accountPreferences=”@xml/account_preferences”
/>
2. 在AndroidManifest.xml文件中开启一个帐户管理服务
<service android:name=”SleepyAccountsService”>
<intent-filter>
<action android:name=”android.accounts.AccountAuthenticator” />
</intent-filter>
<meta-data android:name=”android.accounts.AccountAuthenticator”
android:resource=”@xml/authenticator” />
</service>
3. 实现帐户服务类SleepyAccountsService
public class SleepyAccountsService extends Service {
private SleepyAccountAuthenticator authenticator;
public Ibinder onBind(Intent intent) {
if(intent.getAction().equals(android.accounts.AccountManager.ACTION_AUTHENTICATOR_INTENT)) {
return getSleepyAuthenticator().getIBinder();
return null;
}
private SleepyAccountAuthenticator getSleepyAuthenticator() {
if(authenticator == null)
authenticator = new SleepyAccountAuthenticator(this);
return authenticator;
}
}
}
4. 在添加、操作帐户时会通过AbstractAccountAuthenticator实现异步调用。
public Bundle addAccount(AccountAuthenticatorResponse response, String accountType,
String authTokenType, String[] requiredFeatures, Bundle options) throws NetworkErrorException
{
Bundle bundle = new Bundle();
Intent intent = new Intent(context, SleepyAccountAuthenticatorActivity.class);;
intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response);
bundle.putParcelable(AccountManager.KEY_INTENT, intent);
return bundle;
}
Android开发之帐户管理的更多相关文章
- Android学习探索之Java 8 在Android 开发中的应用
前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...
- Android 开发一定要看的15个实战项目
前言: 虽说网上有太多的Android课程,但是大多都是视频,有Android在线开发环境的几乎没有,但是对于学习Android的人来说拥有在线的Android开发环境是非常好的,可以随时动手操作学习 ...
- Android开发学习之路-关于Exception
Exception在Java中是表示异常的一个类.它是Throwable的子类. 而Exception的子类RuntimeException是一个特殊的异常类,在代码中不需要对此类进行throw,而是 ...
- Android开发学习之路-Android中使用RxJava
RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). ...
- Android开发学习之路-记一次CSDN公开课
今天的CSDN公开课Android事件处理重难点快速掌握中老师讲到一个概念我觉得不正确. 原话是这样的:点击事件可以通过事件监听和回调两种方法实现. 我一听到之后我的表情是这样的: 这跟我学的看的都不 ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发-之监听button点击事件
一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...
- Android 开发环境在 Windows7 下的部署安装
Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...
- Android开发之自定义的ListView(UITableViewController)
Android开发中的ListView, 顾名方法思义,就是表视图.表示图在iOS开发中就是TableView.两者虽然名称不一样,但是其使用方法,使用场景以及该控件的功能都极为相似,都是用来展示大量 ...
随机推荐
- GIT 提交步骤
1.提交 git add .
- BFC与hasLayout
BFC与hasLayout都是CSS布局上的概念. 几个月前在微博上才了解什么是BFC,算是对布局有点初步的了解. hasLayout则是IE6.7产生许多bug的根源. 一.BFC Floats, ...
- php获取开始与结束日期之间所有日期的方法
/** * 获取指定日期段内每一天的日期 * @param Date $startdate 开始日期 * @param Date $enddate 结束日期 * @return Array */ fu ...
- StoryBoard学习(5):使用segue页面间传递数据
StoryBoard学习(5):使用segue页面间传递数据 函数: - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sen ...
- POJ 1286 Necklace of Beads(Polya简单应用)
Necklace of Beads 大意:3种颜色的珠子,n个串在一起,旋转变换跟反转变换假设同样就算是同一种,问会有多少种不同的组合. 思路:正规学Polya的第一道题,在楠神的带领下,理解的还算挺 ...
- js继承——从创建对象开始
从创建对象开始 创建对象的简单方法就是:使用Object构造函数或者对象字面量.但这两个方法有个缺点:创建相同对象,要编写大量重复代码. 为了避免这个问题——>工厂模式:用函数封装以特定接口创建 ...
- python接口自动化25-发xml格式post请求
前言 post请求相对于get请求多一个body部分,body部分常见的数据类型有以下四种(注意是常见的,并不是只有4种) application/x-www-form-urlencoded appl ...
- golang的缓冲channel和无缓冲channel的区别
话说golang的channel同步的定义真是让人无力吐槽,码农的用户体验就这么难搞么,超耐磨阿,无缓冲和缓冲居然有这么大区别....靠 转载一段网上的资料 --------------------- ...
- OpenCV学习(6) 文件和Mat之间的数据交换
有时候为了便于调试算法,我们需要从文本文件或二进制文件中读取数据,并把数据放到相应的矩阵中去.我们通常可以通过下面的函数实现. 1.从二进制文件中读取数据. 新建一个txt文 ...
- 【Python】Python中的深浅拷贝
[转]python 复制(拷贝)对象 -- ::| 分类: Python |举报|字号 订阅 下载LOFTER我的照片书 | 需求: 你想复制一个对象.因为在Python中,无论你把对象做为参数传递, ...