如何使你的Android应用记住曾经使用过的账户信息
原文:http://android.eoe.cn/topic/android_sdk
当您记住他们的名字时,每个人都会很喜欢。最简单的一个例子,您能够做的,让您的应用更加受人喜爱的,最有效的方法是记住您的用户是谁——尤其是当用户使用一个新的设备,或者是开始像携带电话一样携带平板电脑时。但您如何知道您的用户是谁?您如何在一个新的设备上认出他们?
对于大多数应用来说,答案是AccontManager API。使用user's permission,您可以使用装好管理器取得用户储存在他们设备上的账号名。
集成用户的账号可以让您做各种各样的事情,例如:
- 使用用户的email地址自动填充表格。
- 取得一个绑定到用户而不是设备的ID。
确定您的账户管理器
应用基本上都是使用下述三种技术中的一个来记住用户的:
- * 请求用户键入用户名
- * 检索唯一的设备ID来记住这个设备
- * 通过AccontManager检索内置的账号
选项(1)是有问题的。首先,让用户在进入您的应用之前键入用户名会让您的应用缺乏吸引力。其次,无法保证选择的用户名是唯一的。
选项(2)对用户来说是省事的,但达成它是比较棘手的。更重要的是,这种方法只会允许您在同一个设备上记住用户。想象一下某人升级了一个牛逼闪闪的新设备,但却发现您的应用没有记住他的挫折感。
选项(3)是首选。账户管理器允许您获取存储在用户设备上的账户信息。正如我们在本节看到的,使用账户管理器使您只需要向您的UI添加一对额外的接口就能够记住用户,而和用户拥有多少设备无关。
决定使用账户的类型
Android设备可以储存来自不同提供商的多个账户。当您向AccontManager请求账户名时,您可以通过账户类型过滤器来选择。账户类型是一个字符串,它唯一标示了实体创建的账号。例如Google账号拥有一个"com.google"的类型,而Twitter使用"com.twitter.android.auth.login"的账户类型。
请求GET_ACCOUNT权限
In order to get a list of accounts on the device, your app needs the GET_ACCOUNTS permission. Add a tag in your manifest file to request this permission:
为了获取设备上的账户列表,您的应用需要GET_ACCOUNTS权限。在您的manifest文件中添加标签来请求这个权限:
1 |
<manifest ... > |
向账户管理器请求账户列表
当您决定了您所感兴趣的账户类型,您需要查询此类型的账户.调用AccountManager.get())可以获得一个AccountManager实例。然后使用这个实例来调用getAccountsByType()) 。
1 |
AccountManager am = AccountManager.get(this); // "this" references the current Context
Account[] accounts = am.getAccountsByType("com.google");
|
使用账号对象个性化您的应用
账号对象包含一个账户名,Google账户的账户名是一个email地址。您可以用不同的方法来使用这个信息,例如:
- * 作为表单的自动填充选项,这样用户就不必手动输入账号信息。
- * 作为进入您自己在线的,储存使用和个性化信息的数据库密匙。
决定只要用户名是否足够
账户名是记住用户的好方法,但是Accont对象自身不保护您的数据,也不会给您除了用户的账户名以外的任何信息。如果您的应用需要允许用户去在想访问私人数据,您需要一些更强壮的方法:authentication(认证)。下一节解释了如何使用现有的在线服务进行用户验证。之后一节有关写一个自定义验证器使您能够安装您自己的账户类型
如何使你的Android应用记住曾经使用过的账户信息的更多相关文章
- Android之记住密码与自动登陆实现
本文主要讲述了利用sharedpreference实现记住密码与自动登陆功能 根据checkbox的状态存储用户名与密码 将结果保存在自定义的application中,成为全局变量 布局文件 < ...
- Android之拨号界面图片风格,无信息默认显示界面修改
Android之拨号界面图片风格,无信息默认显示界面修改 点开Dialer app,出现拨号,联系人,收藏三个选项卡,也就是三个Fragment,在三个界面都没有信息的时候会显示一个时钟,联系人,收藏 ...
- Android记录3--ExpandableListView使用+获取SIM卡状态信息
Android记录3--ExpandableListView使用+获取SIM卡状态信息 2013年8月9日Android记录 ExpandableListView是一个可以实现下拉列表的控件,大家可能 ...
- Android中获取系统上安装的APP信息
Version:0.9 StartHTML:-1 EndHTML:-1 StartFragment:00000099 EndFragment:00003259 Android中获取系统上安装的APP信 ...
- init进程 && 解析Android启动脚本init.rc && 修改它使不启动android && init.rc中启动一个sh文件
Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径:system/core/init,编译 ...
- Android APP 读取 AndroidManifest.xml 中的版本信息详解
APP都会涉及到版本的问题,Android APP的版本信息保存在AndroidManifest.xml文件的顶部.如下图: 有2个属性表示,“android:versionCode”和“androi ...
- android The connection to adb is down 错误信息
之前运行eclipse执行android应用都没问题,今天突然出问题了,控制台报错: The connection to adb is down, and a severe error has occ ...
- [Android Pro] Android studio jni中调用Log输出调试信息
reference to : http://www.linuxidc.com/Linux/2014-02/96341.htm Android 开发中,java 可以方便的使用调试信息Log.i, Lo ...
- android 保存 用户名和密码 设置等应用信息优化
1.传统的保存用户名,密码方式 SharedPreferences Editor editor = shareReference.edit(); editor.putString(KEY_NAME,& ...
随机推荐
- 写出3个使用this的典型应用
(1).在html元素事件属性中使用,如: <input type=”button” onclick=”showInfo(this);” value=”点击一下” /> (2).构造函数 ...
- 《Unix&Linux大学教程》学习笔记二:指令常识
1:指令的本质——调用可执行程序 在Shell输入命令时,其实就是根据名称运行相应的程序. 2:在系统中查找程序 which 指令名 type 指令名 3:时间与日历 date [-选项] 参数 ca ...
- ES6学习笔记五:Promise异步任务
一:Promise对象 Promise对象代表一个异步操作,有三种状态:Pending(进行中).Resolved(已完成,又称 Fulfilled)和Rejected(已失败). 二:创建与使用 v ...
- Kettle实现数据库迁移
Kettle实现数据库迁移 需求: 做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为实现数据库的迁移,即 ...
- java 获取class文件所在路径
java 获取class文件所在路径 CreateTime--2017年11月14日15:14:32 Author:Marydon 1.获取class文件所在路径(磁盘路径.绝对路径) // 获取 ...
- Eclipse和MyEclipse使用技巧--Eclipse各版本介绍
进入eclipse的下载官网 http://www.eclipse.org/downloads/ 发现,会有多种版本提供下载. 对于刚接触Java开发的初学者,在下载eclipse时,对官网上面提 ...
- Hadoop之我见
最近在学习Hadoop,很想把自己的一些学习遇到的问题以及解决方案分享出来,也碍于最近一堆忙不完的事,就把这事给搁了很久. 那下面我就先来简单说下我为什么要学习Hadoop以及我学习Hadoop的一些 ...
- 使用 ODP.NET 访问 Oracle(.net如何访问Oracle)详解
1,什么是ODF .NE,?就是Oracle 为 .NET (ODP.NET) 专门编写了 Oracle Data Provider,一个用于 Microsoft .NET 环境下的 Oracle 数 ...
- 在string资源中添加变量
public void checkModeByAction() { if(TxrjConstant.ACTION_ADD_RECIPIENT.equals(getIntent().getAct ...
- 解决IE弹框提示“是否停止运行此脚本”问题
有少数情况因为js处理内容较多,系统计算标红和刷新页面较慢,IE可能会弹框提示“是否停止运行此脚本”,若想要继续,点击“否”即可.并同时按照下面的设置更改一下注册表,即可解决弹框问题. http:// ...