Android M2: 科普与代码示例

引言

Android M2是指Android操作系统的第二个主要版本,其全称为Android Marshmallow。Android M2自发布以来,带来了许多新特性和改进,为开发者提供了更好的开发体验和用户体验。本文将通过科普的方式介绍Android M2的一些重要特性,并提供相关的代码示例。

运行时权限

在Android M2中引入了运行时权限机制,允许应用在运行时向用户请求权限。这一机制增强了用户对应用权限的控制,并提高了应用的安全性。以下是一个请求读取联系人权限的代码示例:

// 检查是否有读取联系人权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
    // 请求读取联系人权限
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST);
} else {
    // 已经有读取联系人权限,执行相关操作
    // ...
}

// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == READ_CONTACTS_PERMISSION_REQUEST) {
        if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            // 读取联系人权限已授权,执行相关操作
            // ...
        } else {
            // 读取联系人权限被拒绝
            // ...
        }
    }
}

指纹识别

Android M2引入了指纹识别API,使得开发者可以利用设备上的指纹传感器提供更高级别的用户身份验证。以下是一个使用指纹识别的代码示例:

// 检查设备是否支持指纹识别
FingerprintManager fingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE);
if (fingerprintManager.isHardwareDetected() && fingerprintManager.hasEnrolledFingerprints()) {
    // 创建指纹识别回调
    FingerprintManager.AuthenticationCallback authenticationCallback = new FingerprintManager.AuthenticationCallback() {
        @Override
        public void onAuthenticationError(int errorCode, CharSequence errString) {
            // 指纹识别错误处理
            // ...
        }

        @Override
        public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
            // 指纹识别成功处理
            // ...
        }

        @Override
        public void onAuthenticationFailed() {
            // 指纹识别失败处理
            // ...
        }
    };

    // 开始指纹识别
    fingerprintManager.authenticate(null, null, 0, authenticationCallback, null);
} else {
    // 设备不支持指纹识别或没有已注册的指纹
    // ...
}

运行时权限和指纹识别的兼容性

为了在Android M2之前的版本上使用运行时权限和指纹识别,可以使用Support Library提供的兼容库。以下是一个使用兼容库的代码示例:

// 检查是否有读取联系人权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
    // 请求读取联系人权限
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS}, READ_CONTACTS_PERMISSION_REQUEST);
} else {
    // 已经有读取联系人权限,执行相关操作
    // ...
}

// 检查设备是否支持指纹识别
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(this);
if (fingerprintManager.isHardwareDetected() && fingerprintManager.hasEnrolledFingerprints()) {
    // 创建指纹识别回调
    FingerprintManagerCompat.AuthenticationCallback authenticationCallback = new FingerprintManagerCompat.AuthenticationCallback() {
        @Override
        public void onAuthenticationError(int errMsgId, CharSequence errString) {
            // 指纹识别错误处理
            // ...
        }

        @Override
        public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) {
            // 指纹识别成功处理
            // ...
        }

        @Override
        public void onAuthenticationFailed() {
            // 指纹识别失败处理
            // ...
        }
    };

    // 开始指纹识别
    fingerprintManager.authenticate(null, 0, null, authenticationCallback, null);
} else {
    // 设备不支持指纹