更新记录

1.0.3(2026-09-24) 下载此版本

  • 重构并适配 Vapor 模式

1.0.2(2024-11-10) 下载此版本

  • 修复 sn-e-scankit 多页面调用 scan 方法回调函数混淆的问题

1.0.1(2024-10-05) 下载此版本

查看更多

平台兼容性

uni-app x(5.23)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × 6.0 × × ×

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
√ √ √ √

sn-e-scankit

SinleUI 扩展插件,基于华为统一扫码服务(Scan Kit)封装,当前支持 Android 平台。

包含两部分能力:

  1. 扫码 API scan:调用华为 Scan Kit 的 Default View Mode,弹出华为提供的标准全屏扫码界面(支持相机扫码与导入图片扫码),扫完通过回调返回码值。
  2. 码图生成组件 sn-e-scankit-code:基于 ScanUtil.buildBitmap 将字符串转换为一维码/二维码(EAN-8、EAN-13、UPC-A、UPC-E、Codabar、Code 39、Code 93、Code 128、ITF14、QR、DataMatrix、PDF417、Aztec),组件按自身尺寸实时生成码图,支持自定义前后景色、容错级别与 QR 中部 Logo。

环境要求

  • HBuilderX 5.21+,uni-app x 蒸汽模式项目。
  • 插件已通过 utssdk/app-android/config.json 声明依赖 com.huawei.hms:scanplus:2.12.0.301 与华为 maven 仓 https://developer.huawei.com/repo/(HBuilderX 4.36+ 支持 repositories 字段),编译自定义基座时需保证网络可访问该仓库。
  • 依赖变更需重新打包自定义基座后生效(Kotlin 混编部分无需重打)。
  • Scan Kit 不强制要求 agconnect-services.json;仅当应用在 AppGallery Connect 开通了相关服务并已放置该文件时,才需要在工程中额外配置 AGC 插件(config.json 的 project.plugins 白名单支持 com.huawei.agconnect)。
  • 华为官方提示:使用 Default View Mode 请确保应用未关闭硬件加速(hardwareAccelerated 为 true),否则个别机型扫码界面可能黑屏。

扫码 API

import { scan } from '@/uni_modules/sn-e-scankit'
import type { ScanResult } from '@/uni_modules/sn-e-scankit'

scan({}, (res: ScanResult) => {
    console.log(res.format, res.data)
})

scan(configs, callback):configs 为 UTSJSONObject(vapor 模式下 JS 侧向 UTS 插件传类型化对象会被桥接降级,故插件内部手动解析字段):

属性 类型 说明
configs.scanTypes string 数组 需要识别的码制式('QRCODE' / 'EAN_13' 等),缺省或空数组时识别全部 14 种码
configs.titleType number 扫码界面标题:0 = “扫描二维码/条码”,1 = “扫描二维码”
configs.permTip string 权限申请弹窗提示语,仅在权限未授予时弹出
callback (res: ScanResult) => void 扫码结果回调,format 为码值类型(text/url/telephone 等),data 为码值字符串

相机权限由插件负责申请:未授权时先弹出说明弹窗,确认后请求系统权限;拒绝后跳转系统权限设置页。

组件 sn-e-scankit-code

easycom 直接使用,需给组件显式设置宽高:

<sn-e-scankit-code data="https://sinleui.pages.dev" type="QRCODE"
    style="width: 200px;height: 200px;"></sn-e-scankit-code>
属性 类型 默认值 说明
data string '' 需要编码的数据
type ScanType 'QRCODE' 码图类型(MULTI_FUNCTIONAL 仅用于扫码识别,生成码图无效)
margin number 1 码图边框宽度
bgColor string '#ffffff' 码图背景色
frontColor string '#000000' 码图前景色
qrErrorLevel 'L' | 'M' | 'Q' | 'H' 'M' QR 码容错级别
qrLogo string.ImageURIString '' QR 码中部 Logo 图片路径(支持项目内路径 / 绝对路径 / file://)
customStyle UTSJSONObject | string '' 根节点样式
customClass string.ClassString '' 根节点外部样式类

组件基于 native-view 绑定原生 ImageView,跟随组件尺寸变化自动重新生成码图;也可通过 defineExpose 暴露的 refresh() 手动触发重新生成。

Web 端不包含生成能力,组件渲染为空节点,请使用 sn-qrcode / sn-barcode 代替。

目录结构

sn-e-scankit
├─components
│ └─sn-e-scankit-code
│   └─sn-e-scankit-code.uvue
├─utssdk
│ ├─interface.uts
│ ├─index.uts
│ └─app-android
│   ├─AndroidManifest.xml
│   ├─config.json
│   ├─index.uts
│   ├─scankit.kt
│   └─coder.kt
├─changelog.md
├─package.json
└─readme.md

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.FLASHLIGHT" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

许可协议

MIT协议