Remembering Your User[记住你的用户]

  • 每一个人都非常喜欢自己的名字能被人记住。当中最简单,最有效的使得你的app让人喜欢的方法是记住你的用户是谁,特别是当用户升级到一台新的设备或者是在tablet希望能够像在手机上一样使用(存有相同的数据,比方书签等)。可是怎样知道用户是谁,怎样在新的设备上识别出他们。
  • 对于很多程序来说,能够使用AccountManager APIs来处理上面的问题。在用户授权下,你能够使用AccountManager来获取用户存储在设备上的账户名。
  • 整合用户的账户,这样能够使得你能够做很多事情,比如:
    • 自己主动填写用户的email地址。
    • 获取绑定到用户的ID,而不是绑定到设备的。

Determine if AccountManager for You[推断AccountManager里是否有你]

  • 程序通常使用以下三个方法之中的一个来尝试记住用户:

    • (a)通知用户输入username。
    • (b)取得一个唯一的ID来记住设备。
    • (c)从AccountManager取得一个嵌入的账户。
  • 选项(a)是有问题的。第一,在进入app之前通知用户来输入些什么,这会使得app不受欢迎[当然须要排除首次登入],第二,那不能保证username的唯一性[可能的前提是说某个app固定显示某个用户的信息,而不须要进行切换。这个理解起来有点怪怪的]。
  • 选项(b)对于用户来说略微简单点,可是有点投机取巧的味道。更重要的是,这只使得用户只能在某个设备上被识别,当用户升级到新的设备上时,会导致app不再记得那些用户。
  • 选项(c)是比較好的。Account Manager同意你获取存储在用户设备上的账户信息。以下我们会学习到使用AccountManager来记住用户,无论用户有多少的设备,只须要几步额外的操作就能够达到同步目的。

【老外写文章习惯就是这样,讲某个技术之前,说一大堆为什么选择这个技术,而不是选择其它的方法。这样的精神非常值得我们学习,先问WHY?而不仅仅立刻拿来灌输】

Decide What Type of Account to Use[推断使用的是什么类型的账户]

  • Android设备能够依据很多不同的提供者来存储多个不同类型的账户。
  • 当你为了某个账户名而使用AcccountManager进行查询的时候,能够选择使用Account Type来filter。
  • 账户类型是一个唯一标识已经公布账户的String。比如,Google账户使用“com.google”,Twitter使用“com.twitter.android.auth.login”。

Request GET_ACCOUNT permission [请求GET_ACCOUNT的权限]

  • 为了获得在设备上全部的账户列表,你的app须要有GET_ACCOUNTS权限,使用<uses-permission>标签在manifest文件里来加入请求权限。
<manifest ... >
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
...
</manifest>

Query AccountManager for a List of Accounts[查询出想要的账户列表]

  • 一旦你决定须要查询哪些账户了,能够像以下的样例一样来获得一个Account的数组,里面均是与类型符合的账户信息。
AccountManager am = AccountManager.get(this); // "this" references the current Context

Account[] accounts = am.getAccountsByType("com.google");

  • 假设在数组里面不止一个账户,你须要先呈现出一个对话框来让用户选择当中一个。

Use the Account Object to Personalize Your App[使用账户对象来人性化你的app]

  • Account对象里面包括了账户名(对于Google账户来说是一个邮件地址)。你能够使用这个信息来做不同的事情,比如:

    • 在填写表格的时候给出相应的提示,这种话用户就不用手动输入完整的账户信息。
    • 作为你自己线上数据库的使用与个性化信息的keyword。

Decide Whether an Account Name is Enough[仅有账户名是不够的]

  • 账户名是记住用户的一个好方法,可是Account对象本身并不会保护你的数据或者让你訪问除账户名本身之外的不论什么东西。
  • 假设你的app须要同意用户到线上訪问私人数据,你须要一些更加强大的东西:authentication。
  • 下一节课会解释怎样通过线上服务来鉴定当前用户,怎样自己定义的一个认证机制,这样使得能够安装自己定义的账户。[也就是OAuth2的使用]。


转载请注明出处:http://blog.csdn.net/kesenhoo,谢谢!



【Android Training - UserInfo】记住登入用户的信息[Lesson 1 - 使用AccountManager来记住用户]的更多相关文章

  1. 手游聚合SDK开发之远程开关---渠道登入白名单

    白名单有啥好说的呢?无非就是筛选登入,大家第一眼看到就是这个印象,白名单也是有文章的,弄的时机不同会给你带来很不错的收益,注意是收益.还是举例来说,游戏上线前渠道都会做一个预下载,一般提前1-2天,这 ...

  2. C#-MVC开发微信应用(7)--在管理系统中同步微信用户分组信息

    在前面几篇文章中,逐步从原有微信的API封装的基础上过渡到微信应用平台管理系统里面,逐步介绍管理系统中的微信数据的界面设计,以及相关的处理操作过程的逻辑和代码.希望从一个更高的层次介绍微信的开发. 在 ...

  3. 基于SqlSugar的开发框架循序渐进介绍(6)-- 在基类接口中注入用户身份信息接口

    在基于SqlSugar的开发框架中,我们设计了一些系统服务层的基类,在基类中会有很多涉及到相关的数据处理操作的,如果需要跟踪具体是那个用户进行操作的,那么就需要获得当前用户的身份信息,包括在Web A ...

  4. Android中获取系统上安装的APP信息

    Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259 Android中获取系统上安装的APP信 ...

  5. C# AD(Active Directory)域信息同步,组织单位、用户等信息查询

    示例准备 打开上一篇文章配置好的AD域控制器 开始菜单-->管理工具-->Active Directory 用户和计算机 新建组织单位和用户   新建层次关系如下: 知识了解 我们要用C# ...

  6. linux基础之用户登录信息查看命令

    用户登录信息查看命令 1.who命令 同一个账号通过不同终端登录也属于不同的登录信息,这里不同的终端包含虚拟终端和模拟终端,因为一个用户通过一个终端登录属于一个session 基本介绍 打印当前系统上 ...

  7. Django开发简单采集用户浏览器信息的小功能

    Django开发简单采集用户浏览器信息的小功能 Centos环境准备 yum install –y python-pip export http_proxy=http://10.11.0.148:80 ...

  8. [Django]登陆界面以及用户登入登出权限

    前言:简单的登陆界面展现,以及用户登陆登出,最后用户权限的问题 正文: 首先需要在settings.py设置ROOT_URLCONF,默认值为: ROOT_URLCONF  = 'www.urls'# ...

  9. java web实现在cookie中保存用户名和密码,用户自动登入

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

随机推荐

  1. 动态规划-hdoj-4832-百度之星2014初赛第二场

    Chess Problem Description 小度和小良近期又迷上了下棋.棋盘一共同拥有N行M列,我们能够把左上角的格子定为(1,1),右下角的格子定为(N,M).在他们的规则中,"王 ...

  2. POJ1422 最小路径覆盖入门

    题意:DAG求最小路径覆盖. 注意:二分匹配只试用于求DAG的最小路径覆盖, 有环就不行,具体可以理解证明. 对n个点进行拆点,分成左右两排点,对于边<u, v> 建  <u', v ...

  3. [C#基础] 数据类型

    预定义类型 C#提供了16种预定义类型,其中包括13种简单类型和3种非简单类型. 预定义的简单类型包括以下3种: 11种数值类型 不同长度有符号和无符号的整数类型(8种) 浮点数类型float和dou ...

  4. 利用PHP SOAP扩展实现简单Web Services

    原文:利用PHP SOAP扩展实现简单Web Services WebServices能干什么? WebServices 可以将应用程序转换为网络应用程序. 通过使用 WebServices,您的应用 ...

  5. jsp 中对jar 包的引用

    <%@ page language="java" import="你需要的带包名的类" pageEncoding="gb2312"%& ...

  6. Common Lisp第三方库介绍 | (R "think-of-lisper" 'Albertlee)

    Common Lisp第三方库介绍 | (R "think-of-lisper" 'Albertlee) Common Lisp第三方库介绍 一个丰富且高质量的开发库集合,对于实际 ...

  7. 去掉chrome记住密码后自动填充表单的黄色背景

    chrome表单自动填充后,input文本框的背景会变成黄色的,通过审查元素可以看到这是由于chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性,然后对 ...

  8. SWT可视化设计

    SWT可视化设计,可以使用Google的WindowBuilder. 在Google Code中,搜索WindowBuilder就可以看到路径. 在Eclipse中   Help--->Inst ...

  9. ACdream 1135(MST-最小生成树边上2个值,维护第一个最小的前提下让还有一个最小)

    F - MST Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) SubmitStatu ...

  10. AccountManager使用教程

    API解读 这个类给用户提供了集中注冊账号的接口.用户仅仅要输入一次账户password后,就能够訪问internet资源. 不同的在线服务用不同的方式管理用户,所以account manager 为 ...