Android Pie(9.0)适配
[图片上传失败...(image-74880c-1544772143959)]
查看新功能
显示屏缺口支持
- 使用
getDisplayCutout()
函数获取缺口屏(刘海屏)的参数 - 可以通过谷歌提供的适配方案,使用挖孔区全屏显示解决:
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
getWindow().setAttributes(lp);
多个通知增强功能
- 支持图像:现在,Android 9 可在手机的“短信通知”中显示图像。 您可以使用对短信使用 setData()来显示图像。 以下代码段演示了如何创建 Person 和包含图像的短信。
// Create new Person.
Person sender = new Person()
.setName(name)
.setUri(uri)
.setIcon(null)
.build();
// Create image message.
Message message = new Message("Picture", time, sender)
.setData("image/", imageUri);
Notification.MessagingStyle style = new Notification.MessagingStyle(getUser())
.addMessage("Check this out!", 0, sender)
.addMessage(message);
[图片上传失败...(image-b7321d-1544772143959)]
适用于可绘制对象和位图的 ImageDecoder
Android 9 引入了 ImageDecoder 类,可提供现代化的图像解码方法。 使用该类取代 BitmapFactory 和 BitmapFactory.Options API。
动画
Android 9 引入了 AnimatedImageDrawable 类,用于绘制和显示 GIF 和 WebP 动画图像。
自动填充框架
Android 9 引入了多项改进,自动填充服务可以利用这些改进进一步增强用户填写表单时的体验。 如需详细了解如何在您的应用中使用自动填充功能,请参阅自动填充框架指南。
行为变更
比较多,建议直接看文档
我们公司的app需要注意的几个点,可能对我们有影响
- 限制访问电话号码
- 使用非 SDK 接口的限制
- 传输层安全协议 (TLS) 实现变更
- Android 9 完全取消了对 Android 安全加密文件 (ASEC) 的支持。
- 现在强制执行 FLAG_ACTIVITY_NEW_TASK 要求
- 屏幕旋转变更
- 构建序列号弃用(在 Android 9 中,Build.SERIAL 始终设置为 "UNKNOWN" 以保护用户的隐私。)
- 无法再让多个进程共用同一 WebView 数据目录
- 在 Android 9 之前,暂停的应用发出的通知会被取消。 从 Android 9 开始,暂停的应用发出的通知将被隐藏,直至应用继续运行。
对于非 SDK 接口的限制
无论是直接使用还是通过反射或 JNI 间接使用。 无论应用是引用非 SDK 接口还是尝试使用反射或 JNI 获取其句柄,均适用这些限制。
下面是名单类型:
- 白名单:SDK
- 浅灰名单:仍可以访问的非 SDK 函数/字段。
- 深灰名单:
- 对于目标 SDK 低于 API 级别 28 的应用,允许使用深灰名单接口。
- 对于目标 SDK 为 API 28 或更高级别的应用:行为与黑名单相同
- 黑名单:受限,无论目标 SDK 如何。 平台将表现为似乎接口并不存在。 例如,无论应用何时尝试使用接口,平台都会引发 NoSuchMethodError/NoSuchFieldException,即使应用想要了解某个特殊类别的字段/函数名单,平台也不会包含接口。
下表详细说明了各种访问方式及其相应的结果。