uni-app 调用安卓系统自带人脸解锁

发布于 1周前 作者 caililin 来自 Uni-App

uni-app 调用安卓系统自带人脸解锁

无相关内容

4 回复

可以做 专业插件开发 q 1196097915 主页 https://ask.dcloud.net.cn/question/91948


联系:18968864472(同微)

可以做,联系QQ:1804945430

uni-app 中调用安卓系统自带的人脸解锁功能,可以利用 plus.android 对象来访问原生安卓 API。以下是一个示例代码,展示如何在 uni-app 中调用安卓系统的人脸解锁功能。

首先,确保你的 manifest.json 文件中已经配置了相应的权限:

"plus": {
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.USE_BIOMETRIC",
                "android.permission.CAMERA"
            ]
        }
    }
}

然后,在你的 uni-app 项目中,可以使用以下代码来实现人脸解锁功能:

// #ifdef APP-PLUS
// 引入必要的模块
const main = plus.android.importClass('android.app.Activity');
const context = plus.android.runtimeMainActivity();
const BiometricPrompt = plus.android.importClass('androidx.biometric.BiometricPrompt');
const BiometricManager = plus.android.importClass('androidx.biometric.BiometricManager');
const CancellationSignal = plus.android.importClass('android.os.CancellationSignal');
const Executors = plus.android.importClass('java.util.concurrent.Executors');

// 创建一个CancellationSignal实例
const cancellationSignal = new CancellationSignal();

// 创建一个BiometricPrompt实例
const biometricPrompt = new BiometricPrompt(context, Executors.newSingleThreadExecutor(), new plus.android.implements('androidx.biometric.BiometricPrompt$AuthenticationCallback', {
    onAuthenticationSucceeded: function (result) {
        console.log('Face Unlock Success');
    },
    onAuthenticationFailed: function () {
        console.log('Face Unlock Failed');
    },
    onAuthenticationError: function (errorCode, errString) {
        console.error('Face Unlock Error:', errorCode, errString);
    },
    onAuthenticationCancelled: function () {
        console.log('Face Unlock Cancelled');
    }
}));

// 检查设备是否支持人脸解锁
const biometricManager = BiometricManager.from(context);
if (biometricManager.canAuthenticate() == BiometricManager.BIOMETRIC_SUCCESS) {
    // 显示人脸解锁界面
    const promptInfo = new plus.android.importClass('androidx.biometric.BiometricPrompt$PromptInfo.Builder')
        .setTitle("Face Unlock")
        .setSubtitle("Please authenticate to continue")
        .setDescription("Your biometric data will be used to verify your identity")
        .setNegativeButtonText("Cancel")
        .build();
    
    biometricPrompt.authenticate(promptInfo, cancellationSignal);
} else {
    console.log('Device does not support face unlock or no biometric sensors are available.');
}
// #endif

这段代码首先检查设备是否支持人脸解锁,如果支持,则显示一个人脸解锁界面。用户成功解锁后,会触发 onAuthenticationSucceeded 回调,失败或其他情况会触发相应的回调。

请注意,这段代码仅适用于 APP-PLUS 环境下,即 uni-app 打包为安卓应用时。此外,由于安卓系统的 API 可能会更新,建议查阅最新的 androidx.biometric 文档以确保兼容性和最佳实践。

回到顶部