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稳定版的发布吧~