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.两者虽然名称不一样,但是其使用方法,使用场景以及该控件的功能都极为相似,都是用来展示大量 ...
随机推荐
- 让Firefox支持offsetX、offsetY
//计算光标相对于第一个定位的父元素的坐标 function coordinate(e){ var o = window.event || e, coord, coord_X, coord_Y; co ...
- H2数据库使用 详解
H2最完整的资料下载地址: http://download.csdn.net/detail/yixiaoping/5956595 H2数据库使用 H2数据库介绍 常用的开源数据库:H2,Derby ...
- TMapTextfile v.99/1
By Hellinger Software. Class to handle text files as memory mapped files. Including efficient method ...
- C# WebHelper-CookieHelper,CacheHelper,SessionHelper
常用web操作工具类,记录一下,本文记录的工具类,都要求引用 System.Web 1.CookieHelper /// <summary> /// Cookie工具类 /// </ ...
- gdb 调试的信息输出到文件
# (gdb) set logging file <文件名> # (gdb) set logging on # (gdb) thread apply all bt # (gdb) set ...
- Introducing ASP.NET Core: The New ASP.NET in Town!
The new version of ASP.NET is called ASP.NET Core (a.k.a ASP.NET 5) and it has the most significant ...
- appium+python自动化98-非select弹出选择框定位解决
前言 遇到问题:document.getElementsByClassName(...)[0] is undefined 选择框如果是select标签的,可以直接用select专用的方法去定位点击操作 ...
- serverbash漏洞修补日记——2014/09/30
近期bash漏洞在网上闹得沸沸扬扬的,我也修补一下.以防万一. 须要用到的命令: 查看操作系统版本号:cat /etc/issue 查看bash版本号:bash -version 查看操作系统是64位 ...
- Android RecyclerView (一) 使用完全解析
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45059587: 本文出自:[张鸿洋的博客] 概述 RecyclerView出现 ...
- Python任务调度模块 – APScheduler。动态修改调度时间间隔
APScheduler可以把调度任务放到内存里,也可以把任务放到数据库里,那么如何交互式修改定时任务的执行时间间隔或者下次执行时间呢? 方案一:把定时任务放到数据库里,修改数据库里任务的调度时间 方案 ...