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. 海美迪Q系列视频文明书

    海美迪Q系列视频文明书

  2. 使用Material Design 创建App翻译系列----材料主题的使用(Using Material Theme)

    上一篇是使用Material Design 创建App翻译系列--開始学习篇,进入正题: 新的材料主题提供了下面内容: 1. 提供了同意设置颜色板的系统部件组件. 2. 为这些系统组件提供了触摸反馈动 ...

  3. ios添加pre和post build action

    再vs中,我们可以很方便的再build前.后执行一些脚本为我们做点什么事情.再ios中怎么搞呢,哪必然是对xcode进行操作了.再google搜索了一把,有说操作Scheme的也有说再直接再targe ...

  4. Android菜鸟的成长笔记(5)——Android系统源代码你下载了吗?

    原文:Android菜鸟的成长笔记(5)--Android系统源代码你下载了吗? 在上一篇中我们用Android系统源代码分析了我们前面写的代码,有的朋友可能就会问怎么才能下载到Google官方的源代 ...

  5. mysql union ,UNION RESULT

    mysql> explain select * from t100 union all select * from t200; +----+--------------+------------ ...

  6. Android架构分析之使用自定义硬件抽象层(HAL)模块

    作者:刘昊昱 博客:http://blog.csdn.net/liuhaoyutz Android版本:2.3.7_r1 Linux内核版本:android-goldfish-2.6.29 在上一篇博 ...

  7. 为VisualSVN Server增加在线修改用户密码的功能

    原文:为VisualSVN Server增加在线修改用户密码的功能 附件下载:点击下载 VisualSVN Server是一个非常不错的SVN Server程序,方便,直观,用户管理也异常方便. 不过 ...

  8. HDU 1548 A strange lift(Dijkstra,简单BFS)

    题目大意: 电梯有两个选项向上或向下,每层楼有一个参数ki,代表电梯可以再该楼层的基础上向上或向下移动ki层,限制条件是向上不能超过楼层总数n,向下不能少于一.输入总层数n和当前所在层数以及目标层数, ...

  9. RT3070 USB WIFI 在连接socket编程过程中问题总结

    最近耗时多天,成功的将RT3070驱动.并解决了socket的网络编程,成功的在BA9G10上面实现了USB wif.连上家里的无线路由器,通过ubuntu下面建立的服务端程序,将BA9G10中的数据 ...

  10. Delphi5 update1的序列号

    好不容易找到一个: Serial Number: 100-006-1659Key: 6ax0-91x0 ------------------------------------------- 办法2: ...