Android 6.0新特性

Android 6.0(API级别23)


1. 运行时权限


  • 要确定应用是否已被授予权限,调用新增checkSelfPermission()方法
  • 要求权限时,调用新增的requestPermissions()方法

2.低电耗模式和应用待机模式


  • 低电耗模式:
    如果用户拔下设备的电源插头,并在屏幕关闭的一段时间内保持其不活动状态,设备会进入低电耗模式,在该模式下设备会尝试让系统保持休眠状态。在该模式下,设备会定期短时间恢复正常工作,以便进行应用同步,还可让系统执行任何挂起的操作。
  • 应用待机模式:
    应用待机模式允许系统判定应用在用户未主动使用它时处于空闲状态。当用户有一段时间未触摸应用时,系统便会作出此判定。如果拔下了设备电源插头,系统会为其视为空闲的应用停用网络访问以及暂停同步和作业。

3.取消支持Apache HTTP客户端


Android 6.0版本移除了对Apache HTTP客户端的支持。请改用HttpURLConnection类。

HttpURLConnection 的效率更高,因为他可以通过透明压缩和响应缓存减少网络使用,并可最大限度降低耗电量。

如果要继续使用 Apache HTTP API,您必须先在 build.gradle 文件中声明以下编译时依赖项:

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

4.硬件标识符访问权


从此版本开始,对于使用 WLAN API 和 Bluetooth API 的应用,Android 移除了对设备本地硬件标识符的编程访问权。WifiInfo.getMacAddress()
方法和 BluetoothAdapter.getAddress()
方法现在会返回常量值 02:00:00:00:00:00

现在,要通过蓝牙和 WLAN 扫描访问附近外部设备的硬件标识符,您的应用必须拥有 ACCESS_FINE_LOCATION
或 ACCESS_COARSE_LOCATION
权限。
WifiManager.getScanResults()

BluetoothDevice.ACTION_FOUND

BluetoothLeScanner.startScan()

5.通知


Android 6.0移除Notification.setLatestEventInfo()方法,改用Notification.Builder类构建通知。要重复更新通知,重复使用Notification.Builder实例。调用build()方法可获取更新后的Notification实例。

6.文本选择

现在,当用户在您的应用中选择文本时,您可以在一个浮动工具栏中显示“剪切”“复制”“粘贴”等文本选择操作。其在用户交互实现上与为单个视图启用上下文操作模式中所述的上下文操作栏类似。
要实现可用于文本选择的浮动工具栏,请在您的现有应用中做出以下更改:

  1. 在 View对象或 Activity调用从 startActionMode(Callback)
    更改为 startActionMode(Callback, ActionMode.TYPE_FLOATING)。
  2. 改为使用 ActionMode.Callback的现有实现扩展 ActionMode.Callback2
  3. 替代 onGetContentRect()方法,用于提供 Rect 内容对象(如文本选择矩形)在视图中的坐标。
  4. 如果矩形的定位不再有效,并且这是唯一需要声明为无效的元素,请调用 invalidateContentRect()方法。

请注意,如果您使用 Android 支持库 22.2 修订版,浮动工具栏不向后兼容,默认情况下 appcompat 会获得对 ActionMode
对象的控制权。这会禁止显示浮动工具栏。要在 ActionMode
中启用 AppCompatActivity
支持,请调用 getDelegate()
,然后对返回的 setHandleNativeActionModesEnabled()
对象调用 AppCompatDelegate
,并将输入参数设置为 false
。此调用会将 ActionMode
对象的控制权交还给框架。在运行 Android 6.0(API 级别 23)的设备上,框架可以支持 ActionBar
模式或浮动工具栏模式;而在运行 Android 5.1(API 级别 22)或之前版本的设备上,框架仅支持 ActionBar
模式。

7.浏览器书签变更


此版本移除了对全局书签的支持。android.provider.Browser.getAllBookmarks() 和 android.provider.Browser.saveBookmark() 方法现已移除。同样,READ_HISTORY_BOOKMARKS 权限和 WRITE_HISTORY_BOOKMARKS 权限也已移除。如果您的应用以 Android 6.0(API 级别 23)或更高版本为目标平台,请勿从全局提供程序访问书签或使用书签权限。您的应用应改为在内部存储书签数据。

8.Android 密钥库变更


从此版本开始,Android 密钥库提供程序不再支持 DSA。但仍支持 ECDSA。
停用或重置安全锁定屏幕时(例如,由用户或设备管理员执行此类操作时),系统将不再删除需要闲时加密的密钥,但在上述事件期间会删除需要闲时加密的密钥。

9.WLAN 和网络连接变更


此版本对 WLAN API 和 Networking API 引入了以下行为变更。
现在,您的应用只能更改由您创建的 WifiConfiguration
对象的状态。系统不允许您修改或删除由用户或其他应用创建的 WifiConfiguration
对象。
在之前的版本中,如果应用利用带有 disableAllOthers=true
设置的 [enableNetwork()](https://developer.android.com/reference/android/net/wifi/WifiManager.html#enableNetwork(int, boolean))
强制设备连接特定 WLAN 网络,设备将会断开与移动数据网络等其他网络的连接。在此版本中,设备不再断开与上述其他网络的连接。如果您的应用的 targetSdkVersion
为 “20”
或更低,则会固定连接所选 WLAN 网络。如果您的应用的 targetSdkVersion
为 “21”
或更高,请使用多网络 API(如 openConnection()
、bindSocket()
和新增的 bindProcessToNetwork()
方法)来确保通过所选网络传送网络流量。

10.相机服务变更


你可能感兴趣的:(Android 6.0新特性)