前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >让你相见恨晚的android权限业务实践

让你相见恨晚的android权限业务实践

作者头像
腾讯移动品质中心TMQ
发布2018-02-05 16:32:21
1.1K0
发布2018-02-05 16:32:21
举报

在上一篇Android权限中,我们介绍了一些权限相关的知识,也简述了新的Android M带来的权限变化,我们如何应对这种变化?是摆着我们面前的紧要问题。

现在我们的业务的targetSdkVersion是小于23的,如果有一天我们需要升级到23,那么如何保证业务能按之前一样功能正常?

对我们来说,当升级到23后,在业务需要使用某项权限的时候,会弹窗让用户选择,当用户拒绝权限的时候,我们的业务如果没有正常处理,极有可能会导致程序异常,比如出现各种crash、页面异常显示、操作无响应等等问题。

针对上面的疑问,我们做了如下的工作:

主要分三部分:梳理权限及功能的对应关系、屏蔽权限测试影响、机型权限检查,如下图。

下面分别介绍三部分实际的内容:

一、业务权限梳理

1.1 梳理出业务所有权限

通过以下的手段把业务的权限列表梳理出来:

1、获取业务本身自己的权限

可以通过PackageManager.getPackageInfo.(pkgName, PackageManager.GET_PERMISSIONS).requestedPermissions获取到。

2、获取其他业务的权限

可以通过Android XmlResourceParser解析AndroidManifest.xml文件获取到。

1.2 找出各权限和功能的对应关系

可以通过和相应功能的开发进行沟通确定。

确定不了的,需要查看对应功能代码,找出关键的触发权限的API,参考这篇文档:http://dx.doi.org/10.1145/2046707.2046779,这个是老外总结的api和权限对应关系,Google没有给出这个关系。

二、利用Xposed屏蔽权限进行测试

2.1 安装Xposed框架安装器

前提:手机需要root过。

Xposed 框架需要使用安装器进行安装,所以我们需要先安装Xposed 框架安装器,安装完成打开后点击框架(如图中红框位置),进行框架的安装。

点击后进入框架安装、升级界面,我们点击“安装/更新”,会出现ROOT授权提示,许可即可。Xposed 框架安装完成后重启手机才能激活,可直接点击重启也可手动重启。

2.2 安装权限修改器

安装Permission Master权限修改器,网上可以直接下载到。

2.3 选用模块

勾选后模块就开始发挥作用了。

2.4 选择应用,打开/禁止权限后测试

禁止/允许某个权限后,对权限相应的功能进行测试,看功能是否正常。

三、权限检查

针对Android的权限机制,做了一个简单的权限检查DEMO,主要功能如下:

1、根据输入的权限,检查手机上该权限是否可用。

2、如果权限不可用,尝试申请下该权限,返回结果。

3.1 targetSdkVersion、compileSdkVersion配置

在build.gradle中可以灵活的指定targetSdkVersion、compileSdkVersion版本,如果需要检查6.0以上的系统,请都设置成23,如6.0以下的,请根据实际项目情况设置。

3.2 检查输入

我们把所有待检查的权限都放到一个列表数组中,比如

做完后续的检查输入源。

3.3 开始检查

如果是23版本的,使用checkSelfPermission进行检查,否则使用checkCallingOrSelfPermission进行检查,当然也可以直接用v4兼容库的ContextCompat.checkSelfPermission(),这样就不需要区分版本了。

当没有权限的时候,我们尝试用v4兼容库的ActivityCompat.requestPermissions去申请权限,根据onRequestPermissionsResult返回的结果来写结果文件。

提示:23版本的在demo运行的时候,可能会弹权限提示框。

附上一个简单的流程图:

3.4 结果输出

根据权限列表,可以给出在某一机型上实际的权限结果。

比如:

通过权限检查,在机型A上得出了如下结果:

机型:A

固件版本:***

权限检查情况:

权限允许列表

电话、短信、读写存储卡等

权限限制列表

弹窗、创建快捷方式等

根据上面的权限和功能的梳理,我们得出弹窗、快捷方式对应的功能

弹窗

PUSH功能、提醒功能等

创建快捷方式

桌面创建快捷方式

在结合Xposed屏蔽权限后的测试结果

屏蔽弹窗权限后

PUSH功能的主动下发失效,程序没有针对这种异常进行处理

屏蔽创建快捷方式后

桌面创建快捷方式失效,程序出现crash

综合以上这些,基本可以评估业务在该机型上的表现结果了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯移动品质中心TMQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、业务权限梳理
    • 1.1 梳理出业务所有权限
      • 1.2 找出各权限和功能的对应关系
        • 可以通过和相应功能的开发进行沟通确定。
          • 确定不了的,需要查看对应功能代码,找出关键的触发权限的API,参考这篇文档:http://dx.doi.org/10.1145/2046707.2046779,这个是老外总结的api和权限对应关系,Google没有给出这个关系。
          • 二、利用Xposed屏蔽权限进行测试
            • 2.1 安装Xposed框架安装器
              • 2.2 安装权限修改器
                • 2.3 选用模块
                  • 2.4 选择应用,打开/禁止权限后测试
                  • 三、权限检查
                    • 3.2 检查输入
                      • 3.3 开始检查
                        • 3.4 结果输出
                        相关产品与服务
                        短信
                        腾讯云短信(Short Message Service,SMS)可为广大企业级用户提供稳定可靠,安全合规的短信触达服务。用户可快速接入,调用 API / SDK 或者通过控制台即可发送,支持发送验证码、通知类短信和营销短信。国内验证短信秒级触达,99%到达率;国际/港澳台短信覆盖全球200+国家/地区,全球多服务站点,稳定可靠。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档