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开发之帐户管理的更多相关文章

  1. Android学习探索之Java 8 在Android 开发中的应用

    前言: Java 8推出已经将近2年多了,引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时减化了各种设计模式的实现方式,是Java有史以来最重要的更新.但是Android上, ...

  2. Android 开发一定要看的15个实战项目

    前言: 虽说网上有太多的Android课程,但是大多都是视频,有Android在线开发环境的几乎没有,但是对于学习Android的人来说拥有在线的Android开发环境是非常好的,可以随时动手操作学习 ...

  3. Android开发学习之路-关于Exception

    Exception在Java中是表示异常的一个类.它是Throwable的子类. 而Exception的子类RuntimeException是一个特殊的异常类,在代码中不需要对此类进行throw,而是 ...

  4. Android开发学习之路-Android中使用RxJava

    RxJava的核心内容很简单,就是进行异步操作.类似于Handler和AsyncTask的功能,但是在代码结构上不同. RxJava使用了观察者模式和建造者模式中的链式调用(类似于C#的LINQ). ...

  5. Android开发学习之路-记一次CSDN公开课

    今天的CSDN公开课Android事件处理重难点快速掌握中老师讲到一个概念我觉得不正确. 原话是这样的:点击事件可以通过事件监听和回调两种方法实现. 我一听到之后我的表情是这样的: 这跟我学的看的都不 ...

  6. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  7. Android开发-之监听button点击事件

    一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...

  8. Android 开发环境在 Windows7 下的部署安装

    Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...

  9. Android开发之自定义的ListView(UITableViewController)

    Android开发中的ListView, 顾名方法思义,就是表视图.表示图在iOS开发中就是TableView.两者虽然名称不一样,但是其使用方法,使用场景以及该控件的功能都极为相似,都是用来展示大量 ...

随机推荐

  1. [转]Android之Activity的几种跳转方式

     1.显示调用方法 Intent intent=new Intent(this,OtherActivity.class);  //方法1 Intent intent2=new Intent(); in ...

  2. Codeforces Beta Round #5 D. Follow Traffic Rules 物理

    D. Follow Traffic Rules 题目连接: http://www.codeforces.com/contest/5/problem/D Description Everybody kn ...

  3. HTML5 本地存储(Web Storage)

    HTML5 提供了两种在客户端存储数据的新方法: localStorage - 本地永久存储,下次打开浏览器数据依然存在 sessionStorage - 只存在于一个会话的数据存储,关闭浏览器数据会 ...

  4. TJU 2248. Channel Design 最小树形图

    最小树形图,測模版.... 2248.   Channel Design Time Limit: 1.0 Seconds   Memory Limit: 65536K Total Runs: 2199 ...

  5. Windows下配置Git服务器和客户端

    http://www.cnblogs.com/lwme/archive/2012/12/25/configuring-git-server-and-client-on-windows.html] 选择 ...

  6. jdk1.8 foreach

    lambda 表达式效率非常低,测试代码可以看到大概3~5倍的差距 遍历Map的方式有很多,通常场景下我们需要的是遍历Map中的Key和Value,那么推荐使用的: public static voi ...

  7. (转)RTMP中FLV流到标准h264、aac的转换

    这段时间,工作上的需要,在RTMP上做了flv流到标准h264.AAC的转换,服务器是开源项目CRTMPSERVER,客户端flex编写,视频编码h264,音频编码AAC,现将一些协议相关的东西记录如 ...

  8. TortoiseSVN 冲突解决详细步骤 (图)

    冲突还是很好解决的,但我没有试过在IDE里边集成怎样.记得VSS在Visual Studio里边解决冲突就非常完美,冲突自动报告,自动弹出冲突解决窗口,让你处理该怎么合并两份版本.合并后自动签入com ...

  9. easyui 设置一加载,搜索框立即弹出的效果

    1.部分html文件 <div id="searchForm" region="north" title="标的查询" collaps ...

  10. 突破技术管理,IT人中年危机变契机

    突破技术管理,IT人中年危机变契机 中生代技术 Yesterday 作为一个老技术人,今天不聊技术,就聊点技术人员职业发展的事情:对技术管理岗位的认知,比如技术总监. 先贴一张技术人员职业发展路线图, ...