Android targetSdkVersion 升级到 26 总结

本文介绍了将Android应用的targetSdkVersion升级到26的过程中遇到的问题及解决方案,重点关注了运行时权限管理和权限申请库AndPermission的使用。文章详细讨论了AndPermission的优缺点,并分享了针对产品需求进行的改造,包括权限申请失败提示和防止多次弹框的策略。此外,还提到使用插件扫描API以定位权限相关代码,以及在App启动时处理必选权限的方案选择与问题处理。最后,文章提及了Android 7.0相机问题和其他需要注意的事项。
摘要由CSDN通过智能技术生成

因为公司的 App、组件、模块都是基于 target 22 和 support 24 进行开发的,所以要看下官方文档 releases/platforms 和 libraries/support-library 相关的文档,从中找到影响点。我们受影响主要有 2 个方面:

  • 一、运行时权限申请,(这个是大头)

  • 二、其他问题

找轮子

因为第一个权限问题是比较普遍的,所以应该有相关的开源项目支持,为了效率,我们就不重复制造轮子。参考各个比较流行的开源方案,做了一下对比:

通过以上对比,我们决定使用 AndPermission 的方案,因为这个对于我们现有 App 的侵入是最少的,改动点比较少,而且支持 Appliction 传入(其实当使用 Application 传入时候,会有问题,后面再说)。

说下 AndPermission

当时的考虑点是我们公司很多 SDK 设计的时候是没有 Activity 的引用。但是我们的 SDK, 基本有个 Application 这个引用的,所以选择了一个能够支持传入 Applicaiton 就能够判断权限回调的库。

为什么 AndPermission 能够支持呢?因为 AndPermission 在权限校验的时候会启动 PermissionActivity,并且加上了 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);,所有的权限请求都是在这个 PermissionActivity 处理,而且改动也比较少。

AndPermission 这个库的动态权限请求具体过程大伙可以看下 AndPermission 这个库的源码。(https://github.com/yanzhenjie/AndPermission)使用方式如下:

从 API 调用来看是十分简单好用的。然后我又仔细看了一下它的实现过程,发现了有些不符合我们产品需求的地方:

  1. 业务方接入需要简单,需要有一套默认的权限申请失败提示框

  2. 弹框提醒权限必须是 Activity 的。但是 AndPermission 是支持 Application 传入的,那么就会有问题

  3. 比如我用户点击某个按钮导致后面的方法链中有可能连续调用多次的权限请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值