Android6.0新功能和行为变更

141 阅读2分钟

Android 6.0(Marshmallow)版本新功能和行为变更介绍

Android 6.0(Marshmallow)引入了许多新功能和行为变更。本文将介绍一些关键的适配要点和最佳实践,帮助您确保应用在这一版本中运行顺利。

新功能

指纹身份验证

Android 6.0在支持的设备上引入了指纹身份验证,应用可以使用指纹扫描进行身份验证。

更多

更多功能请参考官方文档:Android 6.0 API

行为变更

运行时权限

在Android 6.0之前,权限是在应用安装时授予的。然而,从Android 6.0开始,某些危险权限需要在应用运行时请求。适配如下:

1. 检查权限

在执行需要权限的操作之前,首先要检查是否已经授予了该权限。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    // 权限尚未授予
}

2. 请求权限

如果权限尚未授予,需要向用户请求权限。

ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, REQUEST_CAMERA_PERMISSION);

3. 处理权限请求结果

用户响应权限请求后,需要在 onRequestPermissionsResult 方法中处理结果。

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == REQUEST_CAMERA_PERMISSION) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 权限被授予
        } else {
            // 权限被拒绝
        }
    }
}

4. 其它API

处理用户拒绝权限并选中了“不再询问”选项的情况:

// 用户是否选中了“不要再问”选项
ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)

// 打开应用设置
Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", getPackageName(), null));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

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

  • 低电耗模式:如果用户拔下设备的电源插头,并在屏幕关闭一段时间后使其保持不活动状态,设备会进入低电耗模式。在此模式下,系统会尝试使系统保持休眠状态,定期短时间恢复正常运行,以便进行应用同步和执行待处理的操作。

  • 应用待机模式:应用待机模式允许系统判定应用在用户未主动使用时处于空闲状态。当用户有一段时间未触摸应用时,系统便会作出此判定。如果将设备拔出,系统会视为空闲的应用停用网络访问,并暂停同步和作业。

请参考针对低电耗模式和应用待机模式进行优化的官方文档。

硬件标识符访问权

为了向用户提供更好的数据保护,从此版本开始,对于使用 Wi-Fi 和 Bluetooth API 的应用,Android 不再支持以编程方式访问设备本地硬件标识符。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()

更多

更多行为变更请参考官方文档:Android 6.0 行为变更