Android 各版本系统适配的一些注意点

5.0

  • 通知栏
    • 使用appcompat-v7库中提供NotificationCompat.Builder替换Notification.Builder
    • setSmallIcon图片资源只使用alpha图层来进行绘制,而不应该包括RGB图层。换句话说就是图片不能有背景色 ,颜色可以通过setColor设置

6.0

  • 权限
    • 运行时危险权限需要在使用到改权限时动态申请
    • Android 各版本系统适配的一些注意点

7.0

  • FileProvider
    • 7.0 之后不能再通过 file:// URI 访问其他应用的私有目录文件或者让其他应用访问自己的私有目录文件
    • StrictMode 策略禁止开发人员在应用外部公开 file:// URI。具体表现为,当我们在应用中使用包含 file:// URI 的 Intent 离开自己的应用时,程序会发生故障
    • 例如平时常用的启动安装应用的intent,调用拍照的intent等需要适配Fileprovider

8.0

  • 权限
    • 在 Android 8.0 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用。对于针对 Android 8.0 的应用,此行为已被纠正。系统只会授予应用明确请求的权限。然而,一旦用户为应用授予某个权限,则所有后续对该权限组中权限的请求都将被自动批准,不会通知用户,但是需要明确申请具体权限。
  • 应用图标
    • 从Android 8.0系统开始,应用程序的图标被分为了两层:前景层和背景层。也就是说,我们在设计应用图标的时候,需要将前景和背景部分分离,前景用来展示应用图标的Logo,背景用来衬托应用图标的Logo。需要注意的是,背景层在设计的时候只允许定义颜色和纹理,但是不能定义形状。
    • 那么应用图标的形状由谁来定义呢?Google将这个权利就交给手机厂商了。不是有些手机厂商喜欢学习苹果的圆角图标吗?没问题,由于应用图标的设计分为了两层,手机厂商只需要在这两层之上再盖上一层mask,这个mask可以是圆角矩形、圆形或者是方形等等,视具体手机厂商而定,就可以瞬间让手机上的所有应用图标都变成相同的规范。
    • 使用Asset Studio编辑器将前景与背景设置好,最终,Android Studio会自动帮我们生成适配8.0系统的应用图标,以及适配老版本系统的应用图标,我们甚至一行代码都不用写,一切工作就已经完成了。
  • 通知栏
    • 从Android 8.0系统开始,Google引入了通知渠道这个概念。什么是通知渠道呢?顾名思义,就是每条通知都要属于一个对应的渠道。每个App都可以*地创建当前App拥有哪些通知渠道,但是这些通知渠道的控制权都是掌握在用户手上的。用户可以*地选择这些通知渠道的重要程度,是否响铃、是否振动、或者是否要关闭这个渠道的通知。
    • 创建通知渠道的代码只在第一次执行的时候才会创建,以后每次执行创建代码系统会检测到该通知渠道已经存在了,因此不会重复创建,也并不会影响任何效率。也就是说通知渠道一旦创建之后就不能再通过代码修改了。
    • Android赋予了开发者读取通知渠道配置的权限,如果我们的某个功能是必须按照指定要求来配置通知渠道才能使用的,那么就可以提示用户去手动更改通知渠道配置。
    • 删除通知渠道的功能,非常不建议大家使用。因为Google为了防止应用程序随意地创建垃圾通知渠道,会在通知设置界面显示所有被删除的通知渠道数量
    • 从8.0系统开始,Google制定了Android系统上的角标规范,也提供了标准的API,长期让开发者头疼的这个问题现在终于可以得到解决了。