鸿蒙应用开发:2.开启指纹密码登录

1.先上效果图

2.上代码

import userIAM from '@ohos.userIAM.userAuth'
import promptAction from '@ohos.promptAction'
@Entry
@Component
struct FingerLoginPage {
  @State isOn:boolean = false
  build() {
      Column() {
        Row(){
          Text(`指纹登录-${this.isOn?'开启':'未开启'}`)
          Toggle({ type: ToggleType.Switch, isOn: this.isOn })
            .selectedColor('#007DFF')
            .switchPointColor('#FFFFFF')
            .onChange((isOn: boolean) => {
              let that = this
              this.isOn = isOn
              if(isOn){
                if(canIUse('SystemCapability.UserIAM.UserAuth.Core')){
                  console.error('设备支持指纹')
                  /**
                   * 获取认证对象
                   */
                  let challenge = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8]);
                  let authType = userIAM.UserAuthType.FINGERPRINT;
                  let authTrustLevel = userIAM.AuthTrustLevel.ATL1;
                  let authParam: userIAM.AuthParam = {
                    challenge: challenge,
                    authType: [authType],
                    authTrustLevel: authTrustLevel,
                  };
                  let widgetParam:userIAM.WidgetParam = {
                    title:'请验证指纹'
                  }
                  let auth:userIAM.UserAuthInstance
                  try {
                    auth = userIAM.getUserAuthInstance(authParam,widgetParam)
                    console.error("获取认证对象成功");
                    /**
                     * 订阅认证结果
                     */
                    try {
                      auth.on('result',{
                        onResult(result){
                          console.error('订阅认证结果result = ' + JSON.stringify(result));
                          let resultNum:number = result.result
                          if(resultNum === 12500000){// 认证成功
                            console.error("指纹认证成功");
                            that.isOn = true
                          }
                          else if(resultNum === 12500001){// 认证失败
                            console.error("指纹认证失败");
                            that.isOn = false
                          }
                          else if(resultNum === 12500003){// 认证取消
                            console.error("指纹认证取消");
                            that.isOn = false
                          }
                          else if(resultNum === 12500010){// 用户未录入指纹
                            console.error("用户未录入指纹");
                            that.isOn = false
                          }else{
                            that.isOn = false
                            console.error('认证错误')
                          }
                          // 取消订阅认证结果
                          try {
                            auth.off("result");
                            console.error("取消订阅认证结果成功");
                          } catch (error) {
                            that.isOn = false
                            console.error("取消订阅认证结果失败, error = " + error);
                          }
                        }
                      });
                      console.error("订阅认证结果成功");
                      /**
                       * 开始认证
                       */
                      try {
                        auth.start();
                        console.error("开始认证");
                      } catch (error) {
                        console.error("开始认证失败:" + error);
                        that.isOn = false
                      }
                    } catch (error) {
                      that.isOn = false
                      console.error("订阅认证结果失败 " + error);
                    }

                  } catch (error) {
                    that.isOn = false
                    promptAction.showToast({
                      message: '获取认证对象失败',
                      duration: 1500
                    });
                    console.error("获取认证对象失败--" + error);
                  }
                }else{
                  that.isOn = false
                  promptAction.showToast({
                    message: '设备不支持指纹识别。。。',
                    duration: 1500
                  });
                }
              }
            })
        }
        .width('100%')
        .height(50)
        .margin({top:100})
        .justifyContent(FlexAlign.SpaceBetween)
      }
      .width('100%')
      .height('100%')
      .padding(10)
  }
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栗照强

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值