Permissions Best Practices

在安装的过程中,用户非常easy忽略权限请求。

假设一个用户相应用感觉沮丧或者操心泄漏个人信息,那么这些用户就会不用他或者卸载它。

怎样规避这个问题呢?

Consider Using an Intent

在非常多的案例中,你可能会在两种实现方式中做出选择,你能够是的你的app拥有一个权限。也能够通过Intent的方式让还有一个app帮你实现相关功能。

比如。一款应用须要通过照相机获取图片,你能够通过请求CAMERA权限,该权限能够使得你的app能够直接控制相机。

你的应用能够用camera的api控制相机和获取图片。这样的方式能够使你的应用全然的控制拍照过程中,并同意相机界面融合到应用中。

然而,假设你不须要所有的控制权,你能够使用Intent 的ACTION_IMAGE_CAPTURE请求图片。

当你发送这个Intent,系统就会提供几个相机的app可选项(前提是没有设置默认使用的应用) ,用户能够选择一个相机应用。然后通过onActivityResult()方法获得返回值。

同理,假设你须要拨打一个电话,使用用户的联系人列表等等,你能够创建一个Intent,或者直接向用户请求权限。

每一种方式都有利有弊。

假设你申请一个户权限:

当你进行一个操作的时候,你的app控制了用户的体验。

然而过多的控制,会添加应用的复杂度。由于你须要设计适当的UI。

在执行时(API>=23)或者安装时,用户被提示授予权限许可。在这之后。你的应用在进行时时无需和用户进行额外的交互。然而,假设用户没有授予权限或者撤销了,你的应用将无法正常执行。

假设使用intent 的方式:

你不须要为了执行设计UI。处理该Intent的应用将提供UI。

然而,因为打开的是另外的应用,这也就意味着,你不能控制用户的交互体验了。在你通过intent启动的app中。因为不是你自己设计的界面。所以用户的交互是不受你控制的。

假设你通过intent启动的这个应用。用户没有一个默认的应用,系统就会弹出一个窗体。让用户选择一个app。

假设用户没有设置一个默认启动的,每次进行该操作的时候,都会弹出一个选择窗体。

Only Ask for Permissions You Need

每一次的权限请求,都是强迫用户去做出一个选择。

你应该最少的向用户去请求权限。

假设用户的版本号大于等于Android6.0,每当用户尝试使用一些须要权限的新特性的时候,你的应用都会弹出一个请求权限的窗体。假设是在早前的版本号中,权限列表是在安装的时候提示给用户的。假设权限列表太长或者看起来不舒服,用户可能不去安装这个应用。为了处理这些问题。你应该最少程度的请求权限。

你能够用intent的方式取代。假设你的新特性须要一个权限。你能够让还有一个app帮你实现这个功能。

Don't Overwhelm the User

假设用户的系统是大于等于Android6.0,用户必须在程序执行时去授予权限。

假设你一次性让面对用户非常多的权限请求,你可能使你的用户收到打击,退出你的应用。

相反的,你应该在什么时候使用,什么时候想用户请求。

在应用中,一个或多个权限往往是必要的。这样的情况。一启动app,我们就要想用户请求。比如。你做了一个摄影的应用。

这个应用须要用户的Camera权限。

当用户第一次启动应用。他们不会对你的权限请求感到困惑。可是假设这款应用有一个特色的红能,向你的通讯录好友风向图片,你不能上来就去请求用户的R  EAD_CONTACT权限。你应该在分享的时候去向用户请求权限。

假设你的应用提供了向导。最好是在向导结束之后在向用户请求权限。

Explain Why You Need Permissions

当你调用requestPermission()方法的时候,系统就会弹出弹出权限申请弹窗,可是这里没有表述你为什么须要这个权限。在非常多案例中。用户会感到困惑。一个比較不错的注意是在调用requestPermission()之前,向用户解释你为什么须要这个权限。

比如:一个摄影app,想要用定位服务在图片上打上标志。一个普通的用户可能不明确为什么一个图片须要使用定位,会感到非常困惑。

在这个案例中。一个好主意是在requestPermission()之前向用户解释。

还有一种方式,你能够把权限请求融合在向导中。在向导中。你能够向用户展示app的特殊功能点,而且向用户展示你为什么须要这个权限。比方。这个摄影的app,就能够在向导中表明”向联系人分享照片“这个特色功能。然后告诉你用户你须要联系人列表这个权限。

然后向用户申请。

这个应用能够能过通过调用requestPermission()方法,向用户请求权限。

当然,不是每个用户都会看完你的向导。所以你还是要在用户使用该功能的时候,检測用户是否授权。假设没有。还要弹窗向用户申请该权限。

Test for Both Permissions Models

在Android6.0中,通过在执行时请求权限取代了安装时。由于这个原因,你必须在更广泛的条件下測试你的应用。

在Android6.0之前我们有充足的理由相信,我们的程序执行了,就有了足够的权限,由于这些权限已经在manifest文件里声明。

在新的权限模型中,就不能够这样了。

在大于等于API23的情况下,你须要确定你的权限:

·        IDentify your app’s current permissions andthe related code paths.

·        Test user flows across permission-protectedservices and data.

·        Test with various combinations of grantedor revoked permissions. For example, a camera app might listCAMERAREAD_CONTACTS,
and ACCESS_FINE_LOCATION in itsmanifest. You should test the app with each of
these permissions turned on andoff, to make sure the app can handle all permission configurations gracefully.

·        Use the adb toolto manage permissions from the command line:

o    Listpermissions and status by group:

$ adb shell pm list permissions -d -g

o    Grantor revoke one or more permissions:

$ adb shell pm [grant|revoke] <permission-name> ...

·        Analyze your app for services that usepermissions.

假设您认为我的分享对您实用,微信扫一扫关注我吧。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

Android 6.0 开发人员对系统权限的使用与练习(Permissions Best Practices)的更多相关文章

  1. android 5.0开发环境搭建

    Android 5.0 是 Google 于 2014 年 10 月 15 日发布的全新 Android 操作系统.本文将就最新的Android 5.0 开发环境搭建做详细介绍. 工具/原料 jdk- ...

  2. Android 当打开“开发人员模式”中的“不保留活动”后,程序应当怎么保持正常执行

    Android 当打开"开发人员模式"中的"不保留活动"后,程序应当怎么保持正常执行咧. .? 在这几天,我一直在纠结这个问题.从发现,程序出现这个问题,是由于 ...

  3. Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言

    今年 5 月,谷歌在 I/O 大会上宣布,Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言. Kotlin 是一种面向现代多平台应用程序的编程语言,成为谷歌开发 Android ...

  4. 用SignalR 2.0开发客服系统[系列2:实现聊天室]

    前言 交流群:195866844 上周发表了 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 这篇文章,得到了很多帮助和鼓励,小弟在此真心的感谢大家的支持.. 这周继续系列2,实现聊天室 ...

  5. 用SignalR 2.0开发客服系统[系列3:实现点对点通讯]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 真的很感谢大家的支持,今天发表系列3 ...

  6. 用SignalR 2.0开发客服系统[系列4:负载均衡的情况下使用SignalR]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...

  7. 用SignalR 2.0开发客服系统[系列5:使用SignalR的中文简体语言包和其他技术点]

    前言 交流群:195866844 目录: 用SignalR 2.0开发客服系统[系列1:实现群发通讯] 用SignalR 2.0开发客服系统[系列2:实现聊天室] 用SignalR 2.0开发客服系统 ...

  8. 提供给Android和iOS开发人员的UWP移植向导

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:前几天微软发布了一个针对Android和iOS开发人员理解Windows Apps概念 ...

  9. Android开发-API指南-系统权限

    System Permissions 英文原文:http://developer.android.com/guide/topics/security/permissions.html 采集日期:201 ...

随机推荐

  1. 【Android 系统开发】使用 Source InSight 阅读 Android 源代码

    1. 安装 Source Insight (1) Source Insight 相关资源 安装相关资源 : -- 下载地址 : http://www.sourceinsight.com/down35. ...

  2. ftk学习记(首篇)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 非常早之前就知道ftk了,当时主要是由于买了李先静的书,所以知道了这么一个项目.由于对这样的g ...

  3. CaffeExample 在CIFAR-10数据集上训练与测试

    本文主要来自Caffe作者Yangqing Jia网站给出的examples. @article{jia2014caffe, Author = {Jia, Yangqing and Shelhamer ...

  4. 阿里logo库

    http://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2

  5. easyui的增删改

    陈旧的开发模式PM:“我要这个功能”后端:“这个先找前端做个模板”前端:“模板做完了”后端:“我来对接一下,这里样式不对”前端:“我改完了”后端:“功能交付”PM:“春节要加这个活动”后端:“这个先找 ...

  6. Pyhton学习——Day47

    # 转载:http://www.cnblogs.com/yuanchenqi/articles/6357507.html# 外键:一种约束条件,与主键对应# 主表:被绑定的表:字表# 外键约束:# - ...

  7. 判断浏览器是PC设备还是移动设备

    var browser={ versions:function(){ var u = navigator.userAgent, app = navigator.appVersion; return { ...

  8. HDU 2049 不容易系列之(4)——考新郎( 错排 )

    链接:传送门 思路:错排水题,从N个人中选出M个人进行错排,即 C(n,m)*d[m] 补充:组合数C(n,m)能用double计算吗?第二部分有解释 Part 1. 分别求出来组合数的分子和分母然后 ...

  9. [读书笔记] Python数据分析 (四) 数组和矢量计算

    Numpy:高性能计算和数学分析的基础包 ndarray, 一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组 用于对数组数据进行快速运算的标准数学函数 用于读写磁盘数据的工具和用于操作内存 ...

  10. H5图片上传、压缩

    1.注册input file标签的onchange事件: 2.检查图片格式: 3.检查图片大小: 4.压缩图片 5.上传图片至服务器: 前端代码: document.getElementById('i ...