一、针对所有应用的行为变更

隐私权变更

1、后台对传感器的访问受限

Android 9 限制后台应用访问用户输入和传感器数据的能力。 如果您的应用在运行 Android 9 设备的后台运行,系统将对您的应用采取以下限制:

您的应用不能访问麦克风或摄像头。

使用连续报告模式的传感器(例如加速度计和陀螺仪)不会接收事件。

使用变化或一次性报告模式的传感器不会接收事件。

如果您的应用需要在运行 Android 9 的设备上检测传感器事件,请使用前台服务。

2、限制访问通话记录

对于需要访问通话敏感信息(如读取通话记录和识别电话号码)的应用,该 CALL_LOG 权限组为用户提供了更好的控制和可见性。

如果您的应用需要访问通话记录或者需要处理去电,则您必须向 CALL_LOG 权限组明确请求这些权限。 否则会发生 SecurityException。

3、限制访问电话号码

在未首先获得 READ_CALL_LOG 权限的情况下,除了应用的用例需要的其他权限之外,运行于 Android 9 上的应用无法读取电话号码或手机状态。

与来电和去电关联的电话号码可在手机状态广播(比如来电和去电的手机状态广播)中看到,并可通过 PhoneStateListener 类访问。 但是,如果没有 READ_CALL_LOG 权限,则 PHONE_STATE_CHANGED 广播和 PhoneStateListener 提供的电话号码字段为空。

要从手机状态中读取电话号码,请根据您的用例更新应用以请求必要的权限:

强制执行 FLAG_ACTIVITY_NEW_TASK 要求

在 Android 9 中,您不能从非 Activity 环境中启动 Activity,除非您传递 Intent 标志 FLAG_ACTIVITY_NEW_TASK。

如果您尝试在不传递此标志的情况下启动 Activity,则该 Activity 不会启动,系统会在日志中输出一则消息。

注:在 Android 7.0(API 级别 24)之前,标志要求一直是期望的行为并被强制执行。 Android 7.0 中的一个错误会临时阻止实施标志要求。

屏幕旋转变更

从 Android 9 开始,对纵向旋转模式做出了重大变更。 在 Android 8.0(API 级别 26)中,用户可以使用 Quicksettings 图块或 Display 设置在自动屏幕旋转和纵向旋转模式之间切换。 纵向模式已重命名为旋转锁定,它会在自动屏幕旋转关闭时启用。 自动屏幕旋转模式没有任何变更。

当设备处于旋转锁定模式时,用户可将其屏幕锁定到顶层可见 Activity 所支持的任何旋转。 Activity 不应假定它将始终以纵向呈现。 如果顶层 Activity 可在自动屏幕旋转模式下以多种旋转呈现,则应在旋转锁定模式下提供相同的选项,根据 Activity 的 screenOrientation 设置,允许存在一些例外情况(见下表)。

请求特定屏幕方向(例如,screenOrientation=landscape)的 Activity 会忽略用户锁定首选项,并且行为与 Android 8.0 中的行为相同。

旋转锁定模式通过设置 WindowManager 在处理 Activity 旋转时使用的用户旋转首选项来发挥作用。 用户旋转首选项可能在下列情况下发生变更。 请注意,恢复设备的自然旋转存在偏差,对于外形与手机类似的设备通常设置为纵向:

当用户接受旋转建议时,旋转首选项变为建议方向。

当用户切换到强制纵向应用(包括锁定屏幕或启动器)时,旋转首选项变为纵向。

下表总结了常见屏幕方向的旋转行为:

屏幕方向

行为

未指定、user

在自动屏幕旋转和旋转锁定下,Activity 可以纵向或横向(以及颠倒纵向或横向)呈现。 预期同时支持纵向和横向布局。

userLandscape

在自动屏幕旋转和旋转锁定下,Activity 可以横向或颠倒横向呈现。 预期只支持横向布局。

userPortrait

在自动屏幕旋转和旋转锁定下,Activity 可以纵向或颠倒纵向呈现。 预期只支持纵向布局。

fullUser

在自动屏幕旋转和旋转锁定下,Activity 可以纵向或横向(以及颠倒纵向或横向)呈现。 预期同时支持纵向和横向布局。旋转锁定用户将可选择锁定到颠倒纵向,通常为 180º。

sensor、fullSensor、sensorPortrait、sensorLandscape

忽略旋转锁定模式首选项,视为自动屏幕旋转已启用。 请仅在例外情况下并经过仔细的用户体验考量后再使用此项。

二、行为变更:以 API 级别 28 及更高级别为目标的应用

前台服务

如果应用以 Android 9 或更高版本为目标平台并使用前台服务,则必须请求 FOREGROUND_SERVICE 权限。这是普通权限,因此,系统会自动为请求权限的应用授予此权限。

如果以 Android 9 或更高版本为目标平台的应用尝试创建前台服务且未请求 FOREGROUND_SERVICE,则系统会抛出 SecurityException。

隐私权变更

如果您的应用以 Android 9 为目标平台,则您应牢记以下行为变更。这些针对设备序列信息和 DNS 信息做出的更新可增强用户隐私保护。

1、构建序列号弃用

在 Android 9 中,Build.SERIAL 始终设为 "UNKNOWN",以保护用户隐私。

如果您的应用需要访问设备的硬件序列号,您应改为请求 READ_PHONE_STATE 权限,然后调用 getSerial()。

2、DNS 隐私权

以 Android 9 为目标平台的应用应采用私有 DNS API。具体而言,应用应确保,当系统解析器正在通过传输层安全协议 (TLS) 执行 DNS 时,任何内置的 DNS 客户端均使用加密的 DNS 查找与系统相同的主机名,或停用它而改用系统解析器。

框架安全性变更

Android 9 包含多项可提升应用安全性的行为变更,但这些变更仅在应用以 API 级别 28 或更高级别为目标平台时才会生效。

1、默认启用网络传输层安全协议 (TLS)

如果您的应用以 Android 9 或更高版本为目标平台,则 isCleartextTrafficPermitted() 方法默认返回 false。如果您的应用需要针对特定网域启用明文,则您必须在应用的网络安全配置中,针对这些网域明确将 cleartextTrafficPermitted 设置为 true。

2、按进程分设基于网络的数据目录

在 Android 9 中,为改善应用稳定性和数据完整性,应用无法再让多个进程共享一个 WebView 数据目录。通常情况下,此类数据目录会存储 Cookie、HTTP 缓存以及其他与网络浏览有关的持久性和临时性存储。

在大多数情况下,您的应用应仅在一个进程中使用 android.webkit 软件包中的类(如 WebView 和 CookieManager)。例如,您应该将使用 WebView 的所有 Activity 对象移入同一进程。您可以通过在应用的其他进程中调用 disableWebView(),更严格地执行“仅限一个进程”规则。该调用可防止 WebView 在这些其他进程中被错误地初始化,即使是从依赖内容库进行的调用也能防止。

如果您的应用必须在多个进程中使用 WebView 实例,则您必须先使用 WebView.setDataDirectorySuffix() 方法为每个进程指定唯一的数据目录后缀,然后再在相应进程中使用 WebView 的给定实例。该方法会将每个进程的网络数据放入应用数据目录内其自己的目录中。

即使使用 setDataDirectorySuffix(),系统也不会跨应用的进程界限共享 Cookie 以及其他网络数据。如果应用中的多个进程需要访问同一网络数据,您需要自行在这些进程之间复制该数据。例如,您可以调用 getCookie() 和 setCookie(),以在不同的进程之间手动传输 Cookie 数据。

android手机定位p适配,Android 9(P)版本适配指南相关推荐

  1. android手机用户,2011年Android手机用户使用行为研究报告

    一.市场概述及研究背景 谷歌Android,自获得摩托罗拉.三星.HTC.中兴.华为等诸多品牌的拥趸开始,就扮演起了智能手机市场竞争格局颠覆者的角色.经过近三年时间的发展,Gartner最新数据显示, ...

  2. eclipse开发android手机定位

    一.eclipse开发环境搭建 1.  JDK安装和部署 1)  JDK下载 地址:http://www.oracle.com/technetwork/java/javase/downloads/in ...

  3. android室内定位+3d,基于Android平台的手机室内定位及导航的设计与实现

    摘要: 随着无线通信网络技术的发展,智能手机逐渐融入到人们的日常生活中.它不仅满足当今人们对于通话短信等基本功能的需求,而且还满足人们对于娱乐.上网.社交等功能的需求.导航功能是现在人们常用的一个功能 ...

  4. android手机定位

    做移动互联网就不太可能不碰手机端的开发.上周为了项目需要,俺也挽袖子抡胳膊开始写起了android程序,还好有java基础,倒也上手快,写了几个小程序,主要都是关于定位方面的. 网上也搜得到一些相关的 ...

  5. android gps定位工具类,Android原生GPS和网络定位工具类

    在应用开发中我们常常需要网络获取位置的方法,这里做一个工具类的封装,使用的是Android原生定位,包含两种方式,一种是原生GPS一种是网络定位的封装实现: 工具类代码如下所示: package co ...

  6. android手机数字取证,基于Android智能终端微信应用的数字取证分析模型的研究

    第 42卷 第 10A期 2015年 10月 计 算 机 科 学 Computer Science Vo1.42 No.10A Oct 2015 基于 Android智能终端微信应用的数字取证分析模型 ...

  7. mac安装软件管理Android手机,Mac如何管理Android手机:这方式很得体

    [PConline 评测]还记得是在8月份锤子的发布会上,除了带来了新的坚果手机外,在系统领域,老罗吐槽安卓系统和 Mac 连接时,传输和管理文件的方极为丑陋,因此他们为Mac用户精心开发了一款名为S ...

  8. 全球 android手机排行 2013,全球Android手机性能排行 三星Note 3夺魁

    尽管跑分测试成绩并不是手机实际性能表现的全部,但至少还是能够在很大程度上体现一款手机硬件配置的水平.而作为知名的跑分软件,安兔日前公布了今年第三季Android手机性能排行榜,则或许能够给我们一些参考 ...

  9. android 手机自动化测试,Appium进行Android手机真机自动化测试

    前置条件: 安装JDK jdk 9使用appium还有点问题,最好使用jdk 8.我使用的是jdk 8u161. 下载前需要先同意协议 下载后双击安装,安装完成后需要手工设置环境变量: 右键单击&qu ...

  10. android手机连接windows,将Android手机投影到Windows 10 PC [夏昆冈]

    Windows 10 预览版Build 14328加入了原生的Miracast投影功能,简单说,任意加入无线网络的Win10设备都可以成为一台无线显示器设备.这样一来,几乎所有Android手机和Wi ...

最新文章

  1. 每日一问 - 关于决策树算法
  2. 吵架后一个老公的检讨书(超经典)
  3. HDU - 3488 Tour(二分图最小权匹配+KM)
  4. eplise怎么连接数据库_Eclipse连接MySQL数据库(傻瓜篇)
  5. 庆祝喜提13337000编号,我悄悄把老板的Windows命令行设置成了这样
  6. 蓝牙车库门禁卡原理及实践
  7. android wifi分享文件下载,WiFi文件共享
  8. WPF:MouseDown、MouseUP事件,鼠标按下不起作用
  9. idea2021运行内存扩大
  10. ios应用数据存储方式(偏好设置)-转
  11. 修改 oracle 字符 zhs,修改Oracle数据库的字符集(UTF8→ZHS16GBK)
  12. 野人学Android基础篇之初探UI控件第一课--TextView动态赋值
  13. PHP面试基础题之一
  14. HTML5——新增可拖动
  15. 申请计算机专业有关个人陈述吗,计算机专业个人陈述
  16. springboot+小商户茶叶信息管理 毕业设计 -附源码211445
  17. Pytest-html 报告内中文方法标题乱码
  18. oracle 9i 11g区别,oracle 9i 和oracle 10g 和oracle 11g有什么区别
  19. 微信小程序知识点总结(二)
  20. 文档读取 Walden

热门文章

  1. MySQL删除数据库
  2. SpringBoot获取配置文件常量值
  3. 蒙特卡罗模拟法 —— matlab
  4. jpane1_IDEA插件开发,Jpane中集成Web页面
  5. 【OpenCV 例程200篇】23. 图像添加中文文字
  6. object detection错误Message type object_detection.protos.SsdFeatureExtractor has no field named bat
  7. STL8-string容器
  8. 【Python】PyMuPDF模块将PDF转换为图片
  9. Windows 下的批处理脚本基础——批处理运算操作(代码可拿)
  10. 简述get 和 post 的主要区别——计算机网络