资讯详情

Android 13 开发者预览版

1.行为变更

1.1隐私权

1.1.1针对附近 Wi-Fi 新运行时设备的权限

Android 13 引入了NEARBY_WIFI_DEVICES运行时的权限属于NEARBY_DEVICES权限组适用于会议管理设备和附近 Wi-Fi 接入点连接的应用程序。借助此权限,您可以更容易地解释为什么应用程序访问附近 Wi-Fi 以前的设备 Android 在版本中,这种应用需要声明ACCESS_FINE_LOCATION权限。

假如你的应用是 Android 13 为目标平台调用多个不同的平台 Wi-Fi API,这项新权必须从用户那里获得

:如果您的应用程序试图在没有适当权限的情况下调用 Wi-Fi API,则会发生SecurityException。

1.1.2受影响的用例

这个新的权限会影响几个不同的地方 Wi-Fi 用例包括以下用例:

  • 找到或连接到附近的设备,如打印机或媒体投影设备。您的应用程序可以完成以下任务:
    • 通过带外(例如通过带外) BLE)接收 AP 信息。
    • 使用仅限于本地使用的热点 Wi-Fi 发现并连接到设备的感知和连接功能。
    • 通过 Wi-Fi 与设备直接连接。
  • 发起与已知 SSID(如汽车或智能家居设备)连接。
  • 打开局部使用的热点。
  • 连接到附近 Wi-Fi 感知设备。

1.1.3该权限属于“附近的设备”权限组

NEARBY_WIFI_DEVICES权限是权限组的一部分。这个权限组在 Android 12(API 级别 31)还包括与蓝牙和超宽带相关的权限。如果您的应用程序要求该权限组中的许多权限,用户将在运行过程中看到对话框,并要求用户批准您的应用程序访问附近的设备。在系统设置中,用户必须以组的形式启用和停止使用权限;例如,用户不能停止给定应用程序 Wi-Fi 访问权限,但保持蓝牙使用权限。

1.1.坚定地声明你的应用程序不会推导物理位置

在以 Android 13 当您是目标平台时,请考虑您的应用程序是否会通过 Wi-Fi API 推导物理位置;如果没有,我们应该坚定地声明这种情况。如果您需要做出此声明,请将其列入应用清单文件usesPermissionFlags属性设为neverForLocation,如下面的代码段所示。此过程类似于您声明永远不会用蓝牙设备信息获取位置信息的过程:

<manifest ...>     <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"                      android:usesPermissionFlags="neverForLocation" />     <application ...>         ...     </application> </manifest>

1.1.保持后向兼容性

由于NEARBY_WIFI_DEVICES权限仅适用于 Android 13 或者更高的版本,所以你应该保持正确ACCESS_FINE_LOCATION在您的应用程序中提供向后兼容性的所有声明。但是,只要你坚定地声明应用程序不会使用, Wi-Fi API 通过推导物理位置信息,可以获得最高权限 SDK 版本设为32,如下代码段所示:

<manifest ...>     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"                      android:maxSdkVersion="32" />     <application ...>         ...     </application> </manifest>

1.1.请注意,有些 API 位置信息权限仍然需要

有几个 Wi-Fi API 仍然需要ACCESS_FINE_LOCATION权限可以获得位置信息,就像它们在一样 12L 及更低版本上的一样。示例包括WifiManager以下方法:

  • getScanResults()
  • startScan()

1.1.7检查需要新的权限 API

假如你的应用是 Android 13 或者以更高版本为目标平台,您必须声明NEARBY_WIFI_DEVICES只能调用以下任何权限 Wi-Fi API:

  • WifiManager
    • startLocalOnlyHotspot()
  • WifiAwareManager
    • attach()
  • WifiAwareSession
    • publish()
    • subscribe()/li>
  • WifiP2pManager
    • addLocalService()
    • connect()
    • createGroup()
    • discoverPeers()
    • discoverServices()
    • requestDeviceInfo()
    • requestGroupInfo()
    • requestPeers()
  • WifiRttManager
    • startRanging()

1.1.8Wi-Fi 访问工作流

图 1 显示了搭载 12L 或更低版本的设备上的 Wi-Fi 访问工作流。请注意对 ACCESS_FINE_LOCATION 权限的依赖。

 用于确定以 12L 或更低版本为目标平台的应用是否可以获取 Wi-Fi 信息的流程图。

图 2 显示了搭载 Android 13 或更高版本的设备上的 Wi-Fi 访问工作流(对于以 Android 13 或更高版本为目标平台的应用)。请注意,只要您声明应用不会根据 Wi-Fi 设备信息推导物理位置信息,就不再需要声明 ACCESS_FINE_LOCATION 权限:

 用于确定以 Android 13 或更高版本为目标平台的应用是否可以获取 Wi-Fi 信息的流程图。

1.2安全

1.2.1intent 过滤器会屏蔽不匹配的 intent

在现有实现中,“intent 过滤器”一词不合常理,因为它不会过滤传递给某个组件的 intent;而是仅在隐式 intent 的 intent 解析期间相关。当应用在其清单中注册某个导出的组件并添加 <intent-filter> 时,该组件可以由任何 intent 启动,即使那些 intent 与 intent 过滤器不匹配也可以。

启动组件时,如果不检查 intent,在某些情况下,这让外部应用能够触发本应属于应用内部的功能。

在此变更之前,可通过两种方法将 intent 传递给存在 intent 与所声明 <intent-filter> 元素不匹配情况的组件(例如 <activity>):

  1. 显式 intent:已设置组件名称的 intent;只要发送者有相应权限,这种 intent 始终会传递给相应组件。

  2. intent 选择器:当将匹配的 intent 设置为主 intent 的选择器时,系统将始终传递主 intent。

对于以 Android 13 或更高版本(即 intent 接收端)为目标平台的应用,当且仅当导出的组件与其声明的 <intent-filter> 元素相匹配时,系统才会将来自外部应用的所有 intent 传递给该组件。

不匹配的 intent 会被屏蔽。未强制执行 intent 匹配的例外情况包括:

  • 传送到未声明任何 intent 过滤器的组件中的 intent
  • 来自同一应用内、来自系统和来自根的 intent

2.功能和 API 概览

Android 13 面向开发者引入了一些出色的新功能和 API。以下几部分内容可帮助您了解适用于您的应用的功能并开始使用相关 API。

有关新增、修改和移除的 API 的详细列表,请参阅 API 差异报告。如需详细了解新的 API,请访问 Android API 参考文档 - 新 API 会突出显示以方便查看。此外,如需了解平台变更可能会在哪些方面影响您的应用,请务必查看会影响以 Android 13 为目标平台的应用和所有应用的 Android 13 行为变更。

2.1用户体验

2.1.1带主题的应用图标

:在 Android 13 中选择启用带主题的应用图标

从 Android 13 起,用户可以选择启用带主题的应用图标。借助此功能,用户可以调节受支持的 Android 启动器中应用图标的色调,以继承所选壁纸和其他主题的配色。

如需支持此功能,您的应用必须提供单色应用图标,并通过清单中的 <adaptive-icon> 元素指向该图标。如果用户在其设备上启用了切换开关,系统会使用用户所选壁纸和主题的配色来确定色调颜色,然后该颜色将用于单色应用图标。

规范

您的单色应用图标应符合以下规范:

  • 它应该是 VectorDrawable。
  • 我们建议该徽标适合 90x90 dp 容器中的 36x36 dp 的区域内。如果需要更大尺寸的徽标,最大可以为 60x60 dp。
  • 我们建议您使用平面徽标;如果您的徽标是三维的,那么您可以使用 Alpha 渐变。

大多数应用都可以重复使用用于通知的矢量可绘制对象。

以下示例展示了 Google 应用的单色应用图标,其中虚线表示徽标和容器区域之间的边界。此处显示的边界仅用于图示说明,其大小不可调整。

带主题的应用图标的测量值

1 容器区域 (90x90 dp)。

2 徽标区域(建议尺寸为 36x36 dp,最大尺寸为 60x60 dp)。

实现带主题的应用图标

将 monochrome android:drawable 属性添加到 <adaptive-icon> 元素中。例如,在 res/mipmap-anydpi-v26/ic_launcher.xml 中:

<adaptive-icon >
    <background android:drawable="..." />
    <foreground android:drawable="..." />
    <monochrome android:drawable="@drawable/myicon" />
</adaptive-icon>

在您的清单文件中,使用 android:icon 定义图标:

<application
    …
    android:icon="@mipmap/ic_launcher"
    …>
</application>

:如果清单中同时包含 android:roundIcon 和 android:icon,您必须移除对 android:roundIcon 的引用,或者在由 android:roundIcon 属性定义的可绘制对象中提供单色图标。

2.1.2Quick Settings Placement API

通过通知栏中的“快捷设置”,用户可无需离开应用上下文就能方便地更改设置或执行快速操作。对于提供自定义图块的应用,用户可以更轻松地发现图块并将其添加到“快捷设置”。借助新的图块放置 API,您的应用现在可以提示用户直接将自定义图块添加到一组有效的快捷设置图块中。借助新的系统对话框,用户只需一步即可不离开应用就添加图块,而不必转到“快捷设置”来添加图块。

2.1.3为多语言用户提供更好的支持

Android 13 引入了几项功能来改进多语言用户的应用体验,具体介绍请参阅以下几部分:

按应用设定的语言偏好设置

在许多情况下,多语言用户会将其系统语言设置为某一种语言(例如英语),但又想为特定应用选择其他语言(例如荷兰语、中文或印地语)。为了帮助应用为这些用户提供更好的体验,Android 13 引入了一些 API,它们使应用可在运行时设置在界面中显示不同语言。

使用自定义应用内语言选择器的应用可以使用这些新 API 来减少显示应用内语言选择器所需的样板代码量。为了支持旧版 Android 平台,我们将在即将发布的 Jetpack 库版本中添加类似的 API。

不支持多种语言的应用不受这些变更的影响。

如需了解详情,请参阅按应用设定的语言偏好设置页面。

Unicode 库更新

Android 13 添加了一些最新改进、修复和变更,均包含在 Unicode ICU 70、Unicode CLDR 40 和 Unicode 14.0 中。

以下是两项显著变更:

  • 英语(加拿大)en‑CA 和英语(菲律宾)en‑PH 在无可用的翻译资源时均使用英语(美国)en 翻译资源,而非英语(英国)en‑GB 翻译资源。
  • 针对西班牙语 es、意大利语 it、葡萄牙语 pt 和葡萄牙语(葡萄牙)pt‑PT 引入了 many 复数类别。与 CLDR v38 中引入的法语类似,此类别适用于大数目。

2.1.4更快断字

断字让分行的文本更易于阅读,并且有助于使界面更具自适应性。在 Android 13 中,我们将断字性能优化了多达 200%,因此您现在可以在 TextView 中启用断字功能,这几乎不影响渲染性能。如需启用更快断字功能,请在 setHyphenationFrequency() 中使用新的 fullFast 或 normalFast 频率。

2.2图形

2.2.可编程的着色器

改写自此 GLSL 着色器的 AGSL 动画着色器。

Android 13 添加了对可编程 RuntimeShader 对象的支持,其行为是使用 Android 图形着色语言 (AGSL) 定义的。AGSL 与 GLSL 共用大部分语法,但可用于 Android 渲染引擎中以自定义 Android 画布中的绘制行为以及过滤 View 内容。Android 在内部使用这些着色器来实现涟漪效果、模糊以及拉伸滚动,并且 Android 13 让您能为应用制作类似的高级效果。

2.3核心功能

OpenJDK 11 更新

Android 13 开始刷新 Android 的核心库,以与 OpenJDK 11 LTS 版本保持一致,并增添了适合应用和平台开发者的库更新和 Java 11 语言支持。Android 13 中引入的核心库变更还可以通过 Google Play 系统更新到 ART Mainline 模块,供 Android 12 设备使用。

Android 13 包含对核心库的以下更改:

  • 支持将 var 关键字用于局部变量,以及用作参数 lambda。
  • String 类中的新方法:

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • 支持 Collection.toArray(IntFunction),以便更轻松地使集合适应数组。

  • 支持 java.util 类 OptionalOptionalDoubleOptionalInt 和 OptionalLong 中的 ifPresentOrElse()isEmpty()orElseThrow() 和 stream()

  • 扩展了对 SocketOptions 的支持,包括重复使用套接字。

  • NullReaderNullWriterInputStreamOutputStream 和 transferTo()Reader 功能,用于将读取的字符传输给 Writer

  • 添加了使用 Charsets 进行网址编码和解码的功能。

  • 适用于 FileReaderFileWriterPrintStream 和 PrintWriter 的 Charset 功能。

  • 为 ByteArrayInput 或 OutputStream 以及 Input 或 OutputStream 新增了 transferTo()readNBytes()readAllBytes() 和 writeBytes() 函数。

  • 对 java.lang.invoke.VarHandle 的运行时和编译器支持。

  • 在内部使用 VarHandle 将 java.util.concurrent 更新到 OpenJDK 11 API。

Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

标签: 13p连接器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台