Android Q 行为变更:所有应用

Android Q 平台做了一些行为变更,这些变更可能会影响您的应用。以下行为变更将影响在 Android Q 上运行的所有应用,无论其采用哪种“targetSdkVersion”都不例外。您应该测试您的应用,然后根据需要进行更改以适当地支持这些变更(如果适用)。

此外,请务必查看仅影响以 Android Q 为目标平台的应用的行为变更列表。

注意:除了此页面所列的变更以外,Android Q 还引入了大量更改和限制以增强对用户隐私的保护。有关详情,请参阅隐私权页面。

SDK 接口限制

为了确保应用稳定性和兼容性,Android 平台开始限制您的应用可在 Android 9(API 级别 28)中使用哪些非 SDK 接口。Android Q 包含更新后的受限非 SDK 接口列表(基于与 Android 开发者之间的协作以及最新的内部测试)。

如果您不打算以 Android Q 为目标平台,那么其中一些变更可能不会立即对您产生影响。虽然您目前可以使用灰名单中的一些非 SDK 接口(取决于您应用的目标 API 级别),但如果您使用任何非 SDK 方法或字段,则应用无法运行的风险终归较高。

如果您不确定自己的应用是否使用了非 SDK 接口,则可以测试该应用进行确认。如果您的应用依赖于非 SDK 接口,则应该开始计划迁移到 SDK 替代方案。如果您无法为应用中的某项功能找到使用非 SDK 接口的替代方案,则应该请求新的公共 API。

有关详情,请参阅非 SDK 接口在 Android Q 中的受限情况出现变化以及对非 SDK 接口的限制。

WLAN 直连广播

在 Android Q 中,与 WLAN 直连相关的广播不再具有粘性。如果您的应用依赖于在注册时接收这些广播(因为其之前一直具有粘性),那么您的应用将不再接收这些广播。相反,请在初始化时使用适当的 get() 方法获取信息。

Go 设备上的 SYSTEM_ALERT_WINDOW

在 Android Q(Go 版本)设备上运行的应用不具有 SYSTEM_ALERT_WINDOW 权限。这是因为绘制叠加层窗口会使用过多的内存,这对低内存 Android 设备的性能十分有害。

如果 Go 设备上的应用发送具有 ACTION_MANAGE_OVERLAY_PERMISSION 操作的 Intent,则系统会自动拒绝此请求,并将用户转到设置屏幕,上面会显示不允许授予此权限,原因是它会降低设备的速度。如果 Go 设备上的应用调用 Settings.canDrawOverlays(),则此方法始终返回 false。

关于以旧版 Android 系统为目标平台的应用的警告

在 Android Q 中,当用户首次运行以 Android 6.0(API 级别 23)以下的版本为目标平台的任何应用时,Android 平台会向用户发出警告。如果此应用要求用户授予权限,则系统会先向用户提供调整应用权限的机会,然后才会允许此应用首次运行。

由于 Google Play 的目标 API 方面的要求,用户只有在运行最近未更新的应用时才会看到这些警告。对于通过其他商店分发的应用,我们也将于 2019 年引入类似的目标 API 方面的要求。要详细了解这些要求,请参阅在 2019 年扩展目标 API 级别方面的要求。

应用使用情况

Android Q 引入了与应用使用情况相关的以下行为变更:

UsageStats 应用使用情况的改进

当在分屏或画中画模式下使用应用时,Android Q 现在能够使用 UsageStats 准确地跟踪应用使用情况。

此外,Android Q 现在可以跟踪免安装应用的使用情况。

按应用开启灰度模式

Android Q 现在可以将应用设为灰度显示模式。

暂停方面的改进

在 Android Q 中,暂停的应用无法再播放音频。

更多相关文章

  1. 为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接
  2. 采用CakePHP框架为Android应用快速搭建Web Service服务器及API接
  3. Android(安卓)NDK——使用Android(安卓)Studio引用so库,jar包及mo
  4. Android(安卓)Service的思考(4)
  5. java web开发(三) 接口使用
  6. 浅言架构——Android(安卓)MVP ...
  7. AIDL中使用Interface接口回调
  8. 【测评】迅为4418/6818开发板安卓Android开发板
  9. kotlin优雅实现AIDL

随机推荐

  1. 高手是怎样炼成的:精妙SQL语句介绍
  2. 手把手教你mysql(十五)游标变量流程控制
  3. CentOS 7 安装MyCli MySQL 客户端
  4. 处理SQL标准中的错误值
  5. SQL连接“实时错误'91'”
  6. sql merge的用法实例(学习日记)
  7. 利用Shell脚本将MySQL表中的数据转化为js
  8. MySQL十进制转化为二进制、八进制、十六
  9. 打印出不能正常工作的SQL查询结果[重复]
  10. SQL Server2012-SSIS的包管理和部署