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. 综述-如何克服HTML5的“性工能”障碍

    http://ask.dcloud.net.cn/docs HTML5自出现以来,几经风雨,虽看似很有前途,但实际使用问题太多,DCloud为此踩了无数坑.但我们从未放弃,我们加入了W3C,发起了 H ...

  2. Documentation | AnsibleWorks

    Documentation | AnsibleWorks   Welcome to the Ansible documentation! Ansible is an IT automation too ...

  3. Linux系统基础命令

    这是看itercast的学习笔记 Linux系统基础命令 日期时间 命令date用以查看.设置当前系统时间:格式化显示时间: +%Y--%m--%d 命令hwclock(clock)用以显示硬件时钟时 ...

  4. Swift - 选择框(UIPickerView)的用法

    1,选择框可以让用户以滑动的方式选择值.示例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  5. Android自定义shape的使用

    MainActivity如下: package cn.testshape; import android.os.Bundle; import android.app.Activity; /** * D ...

  6. 黑客白皮书:如何成为一名黑客(附FAQ)

    内容一览 为什么会有这份文档? 什么是黑客? 黑客应有的态度 黑客的基本技能 黑客文化中的地位 黑客和书呆子(Nerd)的联系 风格的意义 其它资源 FAQ(常问问题解答)   作为Jargon Fi ...

  7. CArray

    CArray是windows下的相当于动态数组的模板类.用起来及其方便,近期由于需要在JNI下的C语言中使用,自己参考CArray类函数,及其自己需要使用到的部分函数用C++实现出来,以供自己使用,在 ...

  8. AngularJs打造一个简易权限系统

    AngularJs打造一个简易权限系统 一.引言 上一篇博文已经向大家介绍了AngularJS核心的一些知识点,在这篇博文将介绍如何把AngularJs应用到实际项目中.本篇博文将使用AngularJ ...

  9. 让qt应用程序支持触摸

    一.设备驱动 我的触摸屏是usb接口的 可以参考下这2篇文件 http://blog.csdn.net/paomadi/article/details/8754783 usb触摸屏 http://bl ...

  10. nodejs启动守护程序pm2

    nodejs启动守护程序pm2 by 伍雪颖 做了个应用,server放阿里云,只是server总会自己断,后来写了个心跳程序,就是检測应用线程是否还在,不在就再启动, 这种方法好笨重啊,后来发现no ...