【Android Training - UserInfo】记住登入用户的信息[Lesson 1 - 使用AccountManager来记住用户]

原创 2012年03月27日 11:12:27

Remembering Your User[记住你的用户]

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

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

  • 程序通常使用下面三个方法之一来尝试记住用户:
    • (a)通知用户输入用户名。
    • (b)取得一个唯一的ID来记住设备。
    • (c)从AccountManager取得一个嵌入的账户。
  • 选项(a)是有问题的。第一,在进入app之前通知用户来输入些什么,这会使得app不受欢迎[当然需要排除首次登入],第二,那不能保证用户名的唯一性[可能的前提是说某个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账户来说是一个邮件地址)。你可以使用这个信息来做不同的事情,例如:
    • 在填写表格的时候给出对应的提示,这样的话用户就不用手动输入完整的账户信息。
    • 作为你自己线上数据库的使用与个性化信息的关键字。

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

  • 账户名是记住用户的一个好方法,但是Account对象本身并不会保护你的数据或者让你访问除账户名本身之外的任何东西。
  • 如果你的app需要允许用户到线上访问私人数据,你需要一些更加强大的东西:authentication。
  • 下一节课会解释如何通过线上服务来鉴定当前用户,如何自定义的一个认证机制,这样使得可以安装自定义的账户。[也就是OAuth2的使用]。

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



[深入理解Android卷二 全文-第八章]深入理解ContentService和AccountManagerService

由于《深入理解Android 卷一》和《深入理解Android卷二》不再出版,而知识的传播不应该因为纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容 第8章  深入理解Cont...
  • Innost
  • Innost
  • 2015年08月03日 13:21
  • 10953

开发你自己的Android 授权管理器 (AccountManager的使用以及应用场景)

原文   http://www.devtf.cn/?p=1125 原文链接 : Write your own Android Authenticator原文作者 : UDI C...

AccountManager使用教程

API解读 这个类给用户提供了集中注册账号的接口。用户只要输入一次账户密码后,就可以访问internet资源。 不同的在线服务用不同的方式管理用户,所以account manager 为不同类型的...

Python常用第三方模块

作者:iGuo 链接:https://zhuanlan.zhihu.com/p/21365319 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 一、Python爬...

Ubuntu下同时安装了python2版本和python3版本如何使用pip

Ubuntu下同时安装了python2版本和python3版本如何使用pip分别为P2和P3安装不同类库,在笔者的Ubuntu电脑上同时安装了Python2.7和Python3.4两个版本,在安装Sc...

【Android Training - UserInfo】记住登入用户的信息[Lesson 2 - 使用OAuth2来进行身份鉴定]

Authenticating to OAuth2 Services [使用OAuth2来进行鉴定] 为了安全的访问线上服务,用户需要在service上进行鉴定,他们需要提供身份的证明。对于一个程序来...

【Android Training - UserInfo】记住登入用户的信息[Lesson 3 - 创建自定义的账户]

Creating a Custom Account Type[创建自定义的账户] 到目前为止,我们讨论了如何使用Google APIs。但是我们应该不仅仅是只需要Google的服务而已,比如增加S...

AJAX登入集成CAS的项目获取用户信息

获取与CAS集成项目的用户信息 hello var username="11"; v...

Linux-查询登入用户信息

作为系统管理员,你可能经常会(在某个时候)需要查看系统中有哪些用户正在活动。有些时候,你甚至需要知道他(她)们正在做什么。本文为我们总结了4种查看系统用户信息(通过编号(ID))的方法。 1. ...

用java语言编写的用户登入模块1

本次学习主要利用封装,继承,多态来编写用户登入模板
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【Android Training - UserInfo】记住登入用户的信息[Lesson 1 - 使用AccountManager来记住用户]
举报原因:
原因补充:

(最多只允许输入30个字)