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.两者虽然名称不一样,但是其使用方法,使用场景以及该控件的功能都极为相似,都是用来展示大量 ...
随机推荐
- VK Cup 2016 - Qualification Round 2 D. Three-dimensional Turtle Super Computer 暴力
D. Three-dimensional Turtle Super Computer 题目连接: http://www.codeforces.com/contest/638/problem/D Des ...
- uva 6952 Cent Savings dp
Cent Savings Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/problem/vie ...
- ubuntu 关闭n卡
ubuntu对n卡支持不好,电脑耗电和发汤,把它关闭掉 #sudo add-apt-repository ppa:bumblebee/stable#sudo apt-get update#su ...
- OpenWrt防火墙配置(极路由)
说明: 1.极路由使用的是OpenWrt做为操作系统,本身就是一个Linux,包管理使用opkg,只是改了一个界面而已. 2.Linux下的防火墙最终都会归iptables进行管理,OpenWrt的防 ...
- Python模块之: configobj(转)
原来也有写过一篇文章Python模块之: ConfigParser 用来解析INI文件,但是在使用过程中存在一些问题.比如:1,不能区分大小写.2,重新写入的ini文件不能保留原有INI文件的注释.3 ...
- [Projet] Module NFC
http://www.f4grx.net/projet-module-nfc/ The NFC is a contactless communication technology, which is ...
- Memcached源码分析——连接状态变化分析(drive_machine)
这篇文章主要介绍Memcached中,基于libevent构造的主线程和worker线程所处理连接的状态互相转换的过程(不涉数据的存取等操作),也就是drive_machine的主要业务逻辑了.状态转 ...
- 微信开发之如何使用开发工具--weixin-java-tools
一.前沿 微信公众平台由于没有提供针对语言的开发包,只公布了一个基于Http协议的接口和加解密的算法sdk,这样给微信公众号的开发者带来很多工作量,除了实现业务逻辑外,还需要自己处理底层的接口协议细节 ...
- Mac配置PHP开发环境
安装环境如下: Mac OS 10.10.1 Apache 2.4.9 PHP 5.5.14 MySQL 5.6.22 Apache配置 在Mac OS 10.10.1中是自带Apache软件的,我们 ...
- thymleaf th:text 和 th:utext 之间的区别
1 th:text属性 可对表达式或变量求值,并将结果显示在其被包含的 html 标签体内替换原有html文本 文本连接:用“+”符号,若是变量表达式也可以用“|”符号 e.g. 若home.welc ...