Android版本新特性(6-12)(13预览)

安卓版本特性

Android6.0(简称为棉花糖)
2015年5月28日
1.主要有运行时权限(最主要的更新)

对于以 Android 6.0(API 级别
23)或更高版本为目标平台的应用,请务必在运行时检查和请求权限。要确定您的应用是否已被授予权限,请调用新增的
checkSelfPermission() 方法。要请求权限,请调用新增的 requestPermissions()
方法。即使您的应用并不以 Android 6.0(API 级别 23)为目标平台,您也应该在新权限模式下测试您的应用。

2.取消支持Apache HTTP客户端

如果您的应用使用该客户端,并以 Android 2.3(API 级别 9)或更高版本为目标平台,请改用 HttpURLConnection
类。此 API 效率更高,因为它可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量。要继续使用 Apache HTTP
API,您必须先在 build.gradle 文件中声明以下编译时依赖项:

useLibrary ‘org.apache.http.legacy’//使用Apache库

Android 7.0(简称为牛轧糖)
2016年5月
1.低电耗模式

Android 6.0引入了低电耗模式,当用户设备未插接电源,处于静止状态且屏幕关闭时,该模式会推迟 CPU
和网络活动,从而延长电池寿命。而 Android 7.0
则通过在设备未插接电源且屏幕关闭状态下、但不一定要处于静止状态(例如用户外出时把手持式设备装在口袋里)时应用部分 CPU
和网络限制,进一步增强了低电耗模式。

2.系统权限更改

在Android7.0系统上,Android 框架强制执行了 StrictMode API 政策禁止向你的应用外公开 file://
URI。 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现
FileUriExposedException 异常,如调用系统相机拍照,或裁切照片。

	解决办法
	在清单文件Androidmanifest.xml中注册provider		
    通过FileProvider创建一个content类型的Uri

Android 8.0(奥利奥)
2017年8月
1.通知渠道

通知渠道是由应用自行定义的通知内容类别,借助渠道,开发者可以让用户对不同种类的通知进行精细控制,用户可以单独拦截或更改每个渠道的行为,而不是统一管理应用的所有通知。
步骤:创建NotificationChannel对象并且设置应用内唯一的通知ID,配置通知渠道属性,比如提示声音或者提示内容等等,在NotionFicationManager中注册通知渠道对象。

2.画中画模式(PIP)

PIP模式不会改变Activity的生命周期。当一个Activity处于PIP模式时,其实它是处在暂停状态,但其内容会继续展示。

以下方式来支持PIP模式: Activity.enterPictureInPictureMode(PictureInPictureArgsargs):将Activity置于 PIP 模式之下。
Activity.setPictureInPictureArgs():用于更新Activity 在 PIP 模式下的设置。
如果 Activity 正处于 PIP 模式之下,那么更改的属性将立即生效。

Android 9.0(派)
2018年8月
1.利用wifi-RTT进行室内定位

可以使用RTTAPI来测量与附近支持RTT的WIFI接入点(AP)的距离,同时设备必须启用位置服务和开启WIFI了,并且具有ACCESS_FINE_LOCATION
权限。
设备无需连接到接入点就可使用RTT,为了保护隐私,只有手机可以确定与接入点的距离,接入点无此信息。可以通过多点定位算法来预估这些测量值最相符的设备位置,通过
这种精确性可以打造出例如语音控制“打开哪盏灯”,以及基于位置的信息“此产品是否有特别优惠?”

2.显示屏缺口支持

支持最新的全面屏,包含摄像头扬声器预留控件的屏幕缺口,通过DisplayCutout类可确定非功能区域的位置和形状,这些区域不应显示内容。要确定这些屏幕缺口区域是否存在及其位置,请使用getDisplayCutout()函数。

3.前台服务

清单文件添加权限:
//9.0前台服务权限 “uses-permission android:name=“android.permission.FOREGROUND_SERVICE” 如果没有请求该权限会报
安全异常。

4.启动Anctivity

在9.0中,不能直接非Acitivity环境中启动Activity,否则会崩溃。

解决办法:Intent中添加标志
Intent intent = new Intent(this,TestActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

5.Http请求

9.0下请求会报错查看Android9.0 Http请求异常 - SegmentFault 思否

6.Apache HTTP客户端弃用

在 Android 6.0 时,就已经取消了对 Apache HTTP 客户端的支持。从 Android 9.0 开始,默认情况下该库已从
bootclasspath 中移除。但是耐不住有些SDK中还在使用,比如我见到的友盟QQ分享报错问题。 所以要想继续使用Apache
HTTP,需要在应用的 AndroidManifest.xml 文件中添加:

《application》
android:allowBackup=“true”
android:icon=“@mipmap/ic_launcher”
android:label=“@string/app_name”
android:networkSecurityConfig=“@xml/network_security_config”
android:roundIcon=“@mipmap/ic_launcher_round”
android:supportsRtl=“true”
android:theme=“@style/Theme.MyGitignore”>
uses-library android:name="org.apache.http.legacy"android:required=“false”//使用这个
《/application》

Android 10
Android 10包含多项功能升级,包括手势导航、通知栏管理、全局黑暗模式等等,通知管理新增了“优先”、“无声”和“自适应通知”三种功能,新增深色主题的背景
1.用户存储权限的变更

在外部存储设备中为每个应用提供了一个“隔离存储沙盒”(例如
/sdcard)。任何其他应用都无法直接访问您应用的沙盒文件。由于文件是您应用的私有文件,因此您不再需要任何权限即可在外部存储设备中访问和保存自己的文件。此变更可让您更轻松地保证用户文件的隐私性,并有助于减少应用所需的权限数量。
谷歌官方推荐应用在沙盒内存储文件的地址为Context.getExternalFilesDir()下的文件夹。比如要存储一张图片,则应放在Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES)中。

2.用户的定位权限的变更

为了让用户更好地控制应用对位置信息的访问权限,Android Q 引入了新的位置权限 ACCESS_BACKGROUND_LOCATION。
与现有的 ACCESS_FINE_LOCATION和
ACCESS_COARSE_LOCATION权限不同,新权限仅会影响应用在后台运行时对位置信息的访问权。除非应用的某个 Activity
可见或应用正在运行前台服务,否则应用将被视为在后台运行。
与iOS系统一样,Q中也加入了后台位置权限ACCESS_BACKGROUND_LOCATION,如果应用需要在后台时也获得用户位置(比如滴滴),就需要动态申请ACCESS_BACKGROUND_LOCATION权限。 当然如果不需要的话,应用就无需任何改动,且谷歌会按照应用的targetSDK作出不同处理:
targetSDK <= P 应用如果请求了ACCESS_FINE_LOCATION或 ACCESS_COARSE_LOCATION权限,Q设备会自动帮你申请ACCESS_BACKGROUND_LOCATION权限。

3.设备唯一标识符的变更

从10.0开始 设备的唯一识别码就不存在了,要想获取设备的唯一识别码,只能选择使用硬件信息拼凑出来的15位号码。(亲测目前也在用,因为安全方面,可以下方这样书写,无法获取唯一识别码,但是硬件参数组合起来也是唯一)

 public static String getUUID() {
     String serial = null;
     String m_szDevIDShort = "35" +
         Build.BOARD.length() % 10 + Build.BRAND.length() % 10 +
        Build.CPU_ABI.length() % 10 + Build.DEVICE.length() % 10 +
         Build.DISPLAY.length() % 10 + Build.HOST.length() % 10 +
         Build.ID.length() % 10 + Build.MANUFACTURER.length() % 10 +
         Build.MODEL.length() % 10 + Build.PRODUCT.length() % 10 +
         Build.TAGS.length() % 10 + Build.TYPE.length() % 10 +
         Build.USER.length() % 10; //13 位
     try {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                 serial = android.os.Build.getSerial();
             } else {
                 serial = Build.SERIAL;
             }
             //API>=9 使用serial号
             return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString();
         } catch (Exception exception) {
             //serial需要一个初始化
             serial = "serial"; // 随便一个初始化
       }
     //使用硬件信息拼凑出来的15位号码
     return new UUID(m_szDevIDShort.hashCode(), serial.hashCode()).toString(); }

Android 11
2020年9月
系统主要增强了聊天气泡,安全性和隐私性的保护,电源菜单,可以更好的支持瀑布屏,折叠屏,双屏和 Vulkan 扩展程序等。(注意:Android11 有一个沙盒机制,有兴趣的可以看一下,这个机制对外部设备的个人信息或者数据等等来说增强了很大的安全机制,如果你需要调用第三方外部设备 那可能你得避免这个沙盒机制去做到高授权了。)
1.短信更新改进

首先是聊天泡泡。与Facebook多年来在Android上提供的Messenger应用程序类似,Android11优化了短信功能,提供更加友好的交互。同时,为了确保用户能尽快收到对方的消息,Android 11在通知阴影(NotificationShade)中引入了一个专门的对话部分,它将提供对用户正在进行的任何对话的即时访问。这一更新将有助于短信消息从其他通知中脱颖而出。

2.电话号码相关权限

Android 11 更改了您的应用在读取电话号码时使用的与电话相关的权限。 其实就是两个API: TelecomManager 类中的
getLine1Number() 方法 TelecomManager 类中的 getMsisdn() 方法 也就是当用到这两个API的时候,原来的READ_PHONE_STATE权限不管用了,需要READ_PHONE_NUMBERS权限才行。

3.现在需要 APK 签名方案 v2

对于以 Android 11(API 级别 30)为目标平台,且目前仅使用 APK 签名方案 v1 签名的应用,现在还必须使用 APK
签名方案 v2 或更高版本进行签名。用户无法在搭载 Android 11 的设备上安装或更新仅通过 APK 签名方案 v1 签名的应用。
如果你的targetSdkVersion修改到30,那么你就必须要加上v2签名才行。否则无法安装和更新。

Android12
重新发现了代号为 “Columbus”的功能,并且优化了触发问题,新的手势需要更加用力敲击背面。新的双击背面手势可以截取屏幕截图、召唤谷歌 Assistant、打开通知栏、控制媒体播放或打开最近的应用程序列表。
1.设置页面被重新设计

与之前的安卓版本相比,设置面板的外观发生了变化,搜索栏变小了。开关的设计也做了调整,新的设计更容易区分开关是开还是关。

2.选择音频源

Android 12允许用户更改出现在快速设置中的迷你音乐播放器控制窗口。目前播放器只允许选中的应用进行操作。用户可以按住玩家通知,然后输入设置来打开或关闭玩家期望合作的应用程序。

3.通过Google Play进行Android更新

由于Google正在将Android Runtime(ART)添加到系统更新程序Project
Mainline中,在主线上,用户现在可以看到Google Play商店中显示的系统更新。谷歌还计划在未来通过游戏商店添加更多模块更新。

4.通知栏的更改

Android 12的通知系统将进行调整,以改善通知界面的外观和感觉,以及可用性和效率。回复通知和与通知栏交互时,将使用新的动画和过渡。

5.丰富的内容插入

谷歌将允许用户通过键盘和剪贴板彻底控制富媒体,支持纯文本和样式的文本、图像、视频、音频文件和其他元素,这将提高与其他用户或通过其他应用程序共享文件的速度。

6.单手模式

在Android上12还找到了新的单手模式。这个实现在屏幕顶部显示了更多的空间,交互元素重新聚焦在屏幕底部。这个功能对于大屏手机来说非常方便。

7.支持AVIF形象

这个是十二重要的添加----
AVIF是一种改进的图像格式,它比JPEG有更好的质量,而且不会使文件太大。新格式使用开源视频编解码器AV1,将来可能会取代JPEG图像压缩。

8.多页小部件

Android上
12上的小部件t功能可以在同一个小部件中设置多个卡页,可以通过横向滚动来访问,这将使包含大量信息的小部件更容易阅读,并使它们不那么混乱。

9. 对不支持HEVC应用视频转码

谷歌准备在Android 12中引入新的转码层也将使不支持HEVC视频压缩标准的应用程序能够将文件转码为AVC。然而,这个过程需要时间,这取决于您的芯片组的处理能力。

Android13
android13预览版2月发布,正式版预计8月发布 目前有机型适配 但预计年底完全展开吧

安卓13系统依然相当注重隐私与安全。目前多数APP通常会要求用户授予使用权限,允许存取手机里的媒体档案如照片、影片。而安卓13系统在手机相片库中,则提供了新方式来选取、共享手机或云端的照片与影片,不仅可以选择特定几张照片共享给他人,且无需让一般APP访问手机里的所有媒体档案。此外,安卓13还会通过一些底层的WiFi权限,让用户无需向APP提供位置,就能获得周边的的WiFi网络信号。

谷歌在安卓13的系统更新上也有了一定的进步,允许手机在不进行完整系统更新的情况下更新核心OS 元件,这样用户无需等待手机制造商向其用户提供最新系统版本才能更新。当然这个功能可能和国内用户无缘,因为国内用户的网络大多数时候是无法访问谷歌的相关服务的,而且估计这个功能会和GMS服务绑定在一起,国内一些手机如果没添加GMS服务那也不会支持。另外谷歌未来会将Photopicker、OpenJDK 11 等新功能直接提供旧版Android 用户,还能增加蓝牙与超宽频(Ultra Wideband,UWB)等新模组。
下方是新加入的运行时权限用于管理应用与附近 Wi-Fi 感知设备的连接

目前Android 13 已经有机型在适配了 主要就是以下三个部分。
1、用户体验(有改动但暂时无须适配,年底在看)
2、安全和隐私设置(目前确实有改动,适配的话注意下发注意事项)
3、性能和电池(有改动但暂时无须适配,年底在看)
注意事项
安全隐私设置:
android.permission.POST_NOTIFICATION 通知权限,用于管理应用发送系统通知的能力。如果用户拒绝授予权限,则应用的所有通知渠道都会别屏蔽,类似于用户在系统设置中手动关闭应用通知后发生的行为。

你可能感兴趣的:(android)