zoukankan      html  css  js  c++  java
  • 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;

    }

  • 相关阅读:
    未能正确加载“Microsoft.VisualStudio.Editor.Implementation.EditorPackage”包
    Only one instance of a ScriptManager can be added to the page.
    springboot SSM
    spring mvc 请求转发和重定向
    Spring Boot 配置 Swagger2 接口文档引擎
    solr
    jQuery
    反向代理负载均衡-Nginx
    mybatis二级缓存
    Vue的路由
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3177002.html
Copyright © 2011-2022 走看看