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 行为变更。