五分钟技术趣谈 | Android 14更新升级浅析

移动开发
随着Google I/O 2023发布的Android 14 beta2 ,预计Android 14将在2023年第三季度发布,目前看整体需要适配的内容已经趋向稳定,那么Android 14增加了哪些新特性?又有哪些针对老版本的适配改善?下面我们一起来看看吧。


Part 01

新特性  

1.1 语法性别

正如汉语中的第三人称有他、她、它一样,很多语言根据不同性别、对象会有名词、动词和介词上的语法差异,而使用区分性别语言的人高达30亿,因此APP不针对性别进行语法区分的话,可能会给用户带来糟糕的使用体验。

因此Android14推出全新特性:语法性别Grammar Gender。开发者可以调用专用API:GrammaticalInflectionManager设置单个APP的性别偏好:

setRequestedApplicationGrammaticalGender(int) :设置性别偏好,参数为常量类型,具体类型如下:

GRAMMATICAL_GENDER_NOT_SPECIFIED,0:尚未指定性别偏好,将用默认的values资源;

GRAMMATICAL_GENDER_NEUTRAL,1:指定中性、客观的资源文本,比如 values-fr资源;

GRAMMATICAL_GENDER_FEMININE,2:指定针对女性的资源文本,比如 values-fr-feminine资源;

GRAMMATICAL_GENDER_MASCULINE,3:指定针对男性的资源文本,比如 values-fr-masculine资源。

方法getApplicationGrammaticalGender()用于获取语法性别偏好,返回上述四种int类型。

做完性别语法配置后,需要在APP的manifest文件中声明配置更改:

<activity android:name=".TestActivity"

android:configChanges="grammaticalGender"

android:exported="true">

</activity>

1.2 屏幕截图检测

基于对隐私权限相关方面的考虑,APP需要对截屏操作进行监听和反馈,在以往的安卓版本,这些操作往往需要开发者监听存放截屏文件的目录来实现,稍不留神还会踩到“隐私红线”。

为了创建更标准化的截图检测体验,Android 14引入了一个保护隐私的截图检测API。这个API允许应用程序以每个活动为基础注册回调。当用户在活动可见时截取屏幕截图时,调用这些回调函数,并通知用户。

首先要声明新的权限:

<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />

然后,完成以下步骤,在你的应用程序中的每个活动,用户可能会捕获屏幕截图。

1.通过覆盖onScreenCapture()函数实现回调。在这个回调中,你的应用程序可以采取行动,比如警告另一个用户有人截取了消息对话的截图。

final Activity.ScreenCaptureCallback screenCaptureCallback =

    new Activity.ScreenCaptureCallback() {

        @Override

        public void onScreenCaptured() {

            // Add logic to take action in your app.

        }

    };

2.在活动的onStart()方法中,注册截图回调:

@Override

protected void onStart() {

    super.onStart();

    registerScreenCaptureCallback(executor,

    screenCaptureCallback);

      }

3.最后在onStop()方法中,取消注册屏幕回调:

@Override

protected void onStop() {

    super.onStop();

    unregisterScreenCaptureCallback(screenCaptureCallback);

       }

1.3 全新的系统返回设计

在Android13中,为了应对多元的交互方式,谷歌就对返回事件进行了统一处理,在Android14对系统的返回效果进行了进一步的升级,一是为返回箭头增加了边框和背景,使其更加明显;二是返回箭头的颜色会随着系统主题发生变化。

图片

图1 全新设计的“返回”箭头

二是增加返回预览,让用户可以提前查看目标界面,决定取消或继续返回操作。这块功能还在完善,开发者需要手动开启:开发者选项->预测性返回手势动画。

图片

图2 返回预览示意图

1.4 软件包安装改进

在Android14中,PackageInstaller 推出了新的方法requestUserPreapproval(),该方法可以让App在下载之前,请求用户批准、获取授权,相比于之前版本要等到apk下载完成进行安装时才进行授权申请,该方法能有效避免无效下载,节约流程时间。

以往由于安卓设备上可能安装了多个应用市场,当使用不同的应用市场对App进行更新操作后,可能会造成兼容性问题,因此在Android14中,新增了setRequestUpdateOwnership()方法,用于指定App后续更新的应用商店App,需要申请权限:android.permission.ENFORCE_UPDATE_OWNERSHIP

此后,如果App要变更负责更新应用商店,都需要获取用户的批准。

不知道你遇到过这种情况吗,你正在使用一款App,然而手机应用商店触发了自动更新条件,直接将该App的进程打断,轻则让你郁闷,重则会造成数据的丢失。为避免这种情况,Android14引入了新的安装约束API:InstallConstraints,首先使用InstallConstraints.Builder构建,设置更新条件,如要求App进程不在前台setAppNotForegroundRequired()、要求设备不在通话状态setNotInCallRequired()等。然后使用commitSessionAfterInstallConstraintsAreMet()传入上述InstallConstraints配置实例即可。

Part 02

版本适配改善 

2.1 默认拒绝设定精准的闹钟

精确的闹钟适用于用户指定的通知,或是在确切时间需要执行的操作。从Android 14开始,系统不再向以Android 13及更高版本为目标平台的大多数新安装应用预先授予SCHEDULE_EXACT_ALARM权限,该权限默认处于拒绝状态。

需要SCHEDULE_EXACT_ALARM权限才能通过以下API启动精确闹钟,否则系统会抛出安全异常

setExact()

setExactAndAllowWhileIdle()

setAlarmClock()

日历或闹钟应用需要在应用停止运行时发送日历提醒、唤醒闹钟或提醒。这些应用可以请求 USE_EXACT_ALARM 常规权限。系统将在安装时授予 USE_EXACT_ALARM 权限,拥有此权限的应用将能够像具有 SCHEDULE_EXACT_ALARM 权限的应用一样安排精确闹钟。

2.2 应用只能终止自己的后台进程

Android14增加了对应用调用方法killBackgroundProcesses()的限制,该方法用于终止API进程,只能终止本应用的后台进程,更新后,如果传入其他应用的包名,该方法不会对其他应用产生任何影响。

2.3 最低可安装的目标API级别

从Android14开始,targetSdkVersion低于23的应用将无法被安装,此举旨在提高用户的安全性和隐私性,一些恶意软件通常会入侵一些API级别较低的设备,从而绕过最新版Android系统对用户的保护,当尝试在Android14设备上安装低版本应用时,会显示安装失败并抛出日志:INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 23

2.4 授予对照片和视频的部分访问限制

在Android14上,当应用请求READ_MEDIA_IMAGES或READ_MEDIA_VIDEO媒体权限时,用户可以授予应用访问部分照片和视频的权限,新对话框显示以下权限选项:

  • 「选择照片和视频:」 Android 14 中的新功能,用户选择他们想要提供给应用的特定照片和视频。
  • 「全部允许」:用户授予对设备上所有照片和视频的完整库访问权限。
  • 「不允许」:用户拒绝所有访问。

Part 03

总结  

Android14在近两个月应该会推出稳定版,本期分享主要对Beta版系统新特性和版本适配进行了简要分析,之后 API 应该不会有大的变动。Android14针对UI交互和应用权限方面做出进一步地优化,给用户带来全新使用体验的同时还兼顾了安全性和隐私性,不知道看完这篇分享的开发者和用户小伙伴们对Android14有没有更期待了呢,接下来让我们一起静待Android14稳定版的发布吧~

责任编辑:庞桂玉 来源: 移动Labs
相关推荐

2023-09-12 07:10:13

Nacos架构

2023-08-06 06:55:29

数字可视化物联网

2023-09-18 07:10:48

限流算法

2023-07-23 18:47:59

Docker开源

2023-07-16 18:49:42

HTTP网络

2023-08-29 07:02:09

3D

2023-07-12 16:03:37

Android开发架构

2023-04-15 20:25:23

微前端

2023-07-02 16:09:57

人工智能人脸识别

2023-07-02 16:34:06

GPU虚拟化深度学习

2023-08-06 07:05:25

Android优化

2023-09-03 19:13:29

AndroidKotlin

2023-07-31 08:55:15

AI技术网络暴力

2023-07-12 15:50:29

机器学习人工智能

2023-08-29 06:50:01

Javamaven

2023-09-03 19:21:07

大数据架构

2023-08-06 07:00:59

Openstack网络

2023-08-15 14:46:03

2021-06-04 15:38:18

联邦学习人工智能数据

2021-09-18 11:36:38

混沌工程云原生故障
点赞
收藏

51CTO技术栈公众号