值得你关注的Android6.0上的重要变化(一)

2023-05-16

伴随着众多新特性和新功能,Android6.0(API level 23)在系统和API上都有着诸多的改变。本文着重介绍几个关键变化,以帮助你理解这些改变对你的APP产生的影响。

一、运行时权限检查(Runtime Permisssions)
    此次发布引入了一个新的权限管理模型,使得用户能够在运行时控制应用的权限。这个模型一方面提高了用户在权限控制的可视化程度和管理粒度,另一方面也改善了应用安装和自动更新的流程。用户能够对已安装的应用的各个权限进行独立的授权(grant)和禁用(revoke)。
     作为开发者,当你的app的目标版本(target)为Android6.0(API 23)或更高时,请确保在运行时进行权限的检查和请求。其中,新的方法checkSelfPermission()可以用来判断你的应用是否被授予了权限,而requestPermissions()可请求权限。即使你app的目标版本在android6.0以下,也应该在新的权限管理模型下测试你的应用。
让你的应用支持新的权限管理模型,以及获得更多的官方提示,可查看Working with System Permissionss(https://developer.android.com/training/permissions/index.html)和 Permissions Best Practices(https://developer.android.com/training/permissions/best-practices.html#testing)

二、休眠和应用待机模式(Doze and App Standby)

    此次发布引入了新的省电优化方案,在设备和应用空闲时起作用。此特性影响所有的应用,请确保做好相应的测试。

    休眠模式(Doze): 手机在没有外接电源且放置至屏幕关闭一段时间后,设备将进入休眠模式,它将使系统进入睡眠状态(sleep state)。在此模式下,设备周期性的短暂恢复正常操作,以使应用可以同步,系统执行一些必要操作

    应用待机模式(App Standby):在用户没有使用某应用的情况下,此模式允许系统判定此应用进入空闲状态。系统的判定依据则是用户在一定的时间内没有再点击此应用(译注:主要还是依据前台进程判定)。如果此时设备也没有连接充电器,系统将禁用该应用的网络连接、同步及任务调度

  了解更多关于省电方面的变化,可查看Optimizing for Doze and App Standby(Optimizing for Doze and App Standby)


三、移除Appache的HTTP Client(Apache HTTP Client Removal)

  Android6.0版本移除了对Appache的HTTP client的支持。如果你的app的目标版本是Android2.3(API level 9)或者更高,请使用HttpURLConnection类进行替换。此类采用了透明压缩(transparent compression)和响应缓存(response caching),最小化电量消耗。如果你希望继续使用Appache Http API,请修改你的build.gradle文件,增加如下:

android {
    useLibrary 'org.apache.http.legacy'
}

四、BoringSSL
  Android正在将OpenSSL库替换为BoringSSL库。这将影响你的应用在NDK中所链接的加密库,比如libcrypto.so和libssl.so,它们不是NDK API的一部分。这些库不是公开的API,因此在不同版本和设备上的变化也不会及时通知开发者。而且,这也将暴露你应用的安全缺陷。因此,需要修改你的native代码,通过JNI的方式调用Java的加密API或者静态链接你选择的加密库

五、获取硬件标识符(Access to Hardware Identifier)
  在此版本中,为了更好的保护用户的数据,Android移除了从代码中通过Wi-Fi和蓝牙的API访问设备本地网络标识符。因此WifiInfo.getMacAddress()和BluetoothAdapter.getAddress()将始终返回02:00:00:00:00:00
  而为了能够通过Wi-Fi和蓝牙扫描时,获取周边设备的硬件标识符,应用必须具有ACCESS_FINE_LOCATION 和 ACCESS_COARSE_LOCATION权限:
WifiManager.getScanResults()
BluetoothDevice.ACTION_FOUND
BluetoothLeScanner.startScan()
注意:当运行Android6.0(API level 23)的设备启动后台Wi-Fi或蓝牙扫描时, 此操作对外部设备是可见的,且被显示为一个随机MAC的地址

六、通知(Notifications)
  此版本移除了Notification.setLatestEventInfo()方法。用Notification.Builder类来构造通知,在需要反复更新通知的情况下,保存并重用Notification.Builder的实例;在获取更新后的Notification实例时,调用其build()方法
  adb shell dumpsys notification命令不再输出你的通知文本,而adb shell dumpsys notification --noredact命令将输出一个notification对象的文本

七、AudioManager Changes
  此版本不再支持通过AudioManager类来直接对特定的音频流设置音量和静音,因此:
  setStreamSolo()方法过时(deprecated),替换调用requestAudioFocus()方法
  setStreamMute()方法过时,替换调用为adjustStreamVolume()方法,传入的值也变为ADJUST_MUTE 或 ADJUST_UNMUTE

八、文本选择(Text Selection)
    用户在应用中选择文字后,你现在可以显示一个浮动工具栏(floating toolbar),展示并进行剪切、拷贝、粘贴操作,交互过程的实现和contextual action bar的实现一样( Enabling the contextual action mode for individual views)
  实现选择文字后的浮动工具栏,在app代码中需要做如下修改:
  (1)在View 或 Activity对象,ActionMode的调用从startActionMode(Callback) 变为 startActionMode(Callback, ActionMode.TYPE_FLOATING)
 (2)替换原有的ActionMode.Callback为ActionMode.Callback2
 (3)重写OnGetContentRect()方法,提供内容Rect对象(文本选择的矩形框)在view中的位置
 (4)在矩形框作为唯一的元素不再有效时,调用invalidateContentRect() 方法
    如果你在使用Android Support Library revision 22.2,需要注意浮动工具栏不向后兼容且因为appcompat默认接管ActionMode对象,阻止了浮动工具栏被显示。为了在AppCompatActivity中支持ActionMode,需要调用getDelegate()方法,之后对返回的AppCompatDelegate对象调用setHandleNativeActionModesEnabled()方法,并设置输入参数为false,该调用将ActionMode对象的控制交还给系统框架层。在Android6.0(API level 23)的设备上,框架层支持ActionBar或浮动工具栏模式,在Android 5.1(API level 22)及以下的设备上,只支持ActionBar模式。

九、浏览器书签变化(Browser Bookmark Changes)

  此版本移除了全局书签的支持。android.provider.Browser.getAllBookmarks() 和 android.provider.Browser.saveBookmark()方法被移除,同样的READ_HISTORY_BOOKMARKS和WRITE_HISTORY_BOOKMARKS权限也被移除。如果你app的目标版本是android6.0或更高,请不要访问全局的provider获取书签,而是应该在应用的内部保存书签数据。

原文链接:Android6.0 changes

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

值得你关注的Android6.0上的重要变化(一) 的相关文章

  • Mac下使用homebrew安装配置mysql

    步骤 xff1a 一 安装homebrew 二 安装mysql 三 配置自启动 四 修改mysql密码 五 创建my cnf配置文件 一 安装homebrew homebrew是macOS缺失的软件包管理器 xff0c 譬如可以下载mysq
  • 本地策略不允许您使用交互式登录

    此系统的本地策略不允许您采用交互式登录解决方法 如果计算机是一台不在域中的单独的Windows 2000计算机 xff0c 参考以下步骤 xff1a 1 启动故障计算机至登录状态 xff1b 2 登录到网络中的另外一台Windows 200
  • 用ipmitool管理服务器

    service ip mi start ip mitool I open shell 可以直接进入本地BMC shell ip mitool I lan H U shell 输入password 进入IP MI交互模式 当然这里也可以把sh
  • 命令行设置raid:MegaCli一些简单用法

    查看raid级别 xff1a MegaCli LDInfo Lall aALL 查看raid卡信息 xff1a MegaCli AdpAllInfo aALL 查看硬盘信息 xff1a MegaCli PDList aALL 查看电池信息
  • Cache写机制:Write-through与Write-back

    参考http en wikipedia org wiki Cache Writing Policies上的说明 xff0c Cache写机制分为write through和write back两种 Write through Write i
  • Windows 2008 部署服务之客户端安装

    作者 xff1a 罗国荣 日期 xff1a 2010 05 27 在 Windows 2008 部署服务之Windows XP映像捕获 中我介绍了如何利用捕获映像从已使用 Sysprep exe 准备的参考计算机捕捉计算机的映像 xff0c
  • Windows 2008 部署服务之Windows 7 应答文件创建

    Windows 2008 部署服务之Windows 7 应答文件创建 作者 xff1a 罗国荣 日期 xff1a 2010 05 27 前面我们介绍了如何创建Windows XP的应答文件 xff0c 在这一章中我将给大家介绍如何使用Win
  • Windows 2008 部署服务之Windows 7 映像捕获

    作者 xff1a 罗国荣 日期 xff1a 2010 05 27 在 Windows 2008 部署服务之Windows XP映像捕获 中我介绍了如何利用捕获映像从已使用 Sysprep exe 准备的参考计算机捕捉计算机的映像 xff0c
  • 部署Vista – 第1部分:理解Windows AIK

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 234142 最近在学习Windows
  • 部署Vista – 第2部分:理解Windows安装程序和Windows映像文件格式

    标签 xff1a 部署Vista WINDOWS安装程序 映像 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto
  • 部署Vista – 第3部分:理解配置传送

    标签 xff1a 部署Vista 配置传送 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 无线信号的调制方式 OOK、ASK、FSK、GFSK

    一 OOK OOK On Off Keying 通断键控 如上图所示 xff0c Vm t 是需要发送的数字信号 xff0c Acos 2 fct 是未经过调制的载波 xff0c VAM t 是经过OOK调制的载波信号 OOK的调制原理就是
  • Collections类方法详解____(一)排序操作类

    Collections类对于java集合的学习至关重要 xff0c 这里简单收录了Collections类的基本方法和详解 xff0c 下面先给出汇总列表 Collections类常用方法 分类方法用法 排序操作 sort Collecti
  • 部署Vista – 第4部分:理解部署场景

    标签 xff1a 部署Vista 部署场景 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 部署Vista – 第6部分:使用Windows SIM

    标签 xff1a 部署Vista Windows SIM 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com
  • 部署Vista – 第7部分:创建一个最小化的应答文件

    标签 xff1a 部署Vista 应答文件 原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 104825
  • 部署Vista – 第8部分:从DVD无人参与安装

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 236477 上篇文章使用Windows
  • 部署Vista – 第9部分:自动化系统全新体验

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 236996 在前两篇文章中 xff0c
  • 部署Vista – 第10部分:理解Windows预安装环境

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 237445 本部分内容介绍Window
  • 部署Vista – 第11部分:使用Windows PE

    原创作品 xff0c 允许转载 xff0c 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http iwantfly blog 51cto com 1048259 237865 介绍创建可启动Window

随机推荐