uniapp中NFC功能的实现
uniapp 中实现NF功能
一、前期准备
1、在manifest.json文件中开发NCF权限
2、需要注意这里更改了manifest.json中的内容需要整包更新客户端包才能生效,如果是服务器热更新下载的包不生效
二、实现示例
<template><!-- 标签绑定-明细 --><view id="page"><view class="list-item flex align-items justify-between"><view class="title flex align-items"><text class="gray">标签编码</text></view><text class="gray">{{ formData.bind_code }}</text></view></view>
</template><script>var NfcAdapter;
export default {data() {return {};},onLoad(options) {},onShow() {this.NFCInit();},onHide() {this.NFCReadUID();},methods: {// nfc入口NFCInit() {try {var main = plus.android.runtimeMainActivity();//console.log(main);var Intent = plus.android.importClass('android.content.Intent');// console.log(Intent);var Activity = plus.android.importClass('android.app.Activity');//console.log(Activity);var PendingIntent = plus.android.importClass('android.app.PendingIntent');// console.log(PendingIntent);var IntentFilter = plus.android.importClass('android.content.IntentFilter');// console.log(IntentFilter);// var Uri = plus.android.importClass('android.net.Uri');// var Bundle = plus.android.importClass('android.os.Bundle');// var Handler = plus.android.importClass('android.os.Handler');//console.log(Handler);NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');//console.log(NfcAdapter);var _nfcAdapter = NfcAdapter.getDefaultAdapter(main);// console.log(_nfcAdapter);var ndef = new IntentFilter('android.nfc.action.NDEF_DISCOVERED'); //NfcAdapter.ACTION_NDEF_DISCOVERED// console.log(ndef);var tag = new IntentFilter('android.nfc.action.TAG_DISCOVERED'); //NfcAdapter.ACTION_TECH_DISCOVERED// console.log(tag);var tech = new IntentFilter('android.nfc.action.TECH_DISCOVERED');// console.log(tech);var intentFiltersArray = [ndef, tag, tech];var techListsArray = [['android.nfc.tech.Ndef'],['android.nfc.tech.IsoDep'],['android.nfc.tech.NfcA'],['android.nfc.tech.NfcB'],['android.nfc.tech.NfcF'],['android.nfc.tech.Nfcf'],['android.nfc.tech.NfcV'],['android.nfc.tech.NdefFormatable'],['android.nfc.tech.MifareClassi'],['android.nfc.tech.MifareUltralight']];var _intent = new Intent(main, main.getClass());// console.log(_intent);_intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);var pendingIntent = PendingIntent.getActivity(main, 0, _intent, 0);// console.log(pendingIntent);if (_nfcAdapter == null) {} else if (_nfcAdapter.isEnabled() == false) {} else {_nfcAdapter.enableForegroundDispatch(main, pendingIntent, IntentFilter, techListsArray);}} catch (e) {//TODO handle the exception}},NFCReadUID() {var main = plus.android.runtimeMainActivity();var _intent = main.getIntent();var _action = _intent.getAction();// console.log("action type:" + _action);if (NfcAdapter.ACTION_NDEF_DISCOVERED == _action || NfcAdapter.ACTION_TAG_DISCOVERED == _action || NfcAdapter.ACTION_TECH_DISCOVERED == _action) {var Tag = plus.android.importClass('android.nfc.Tag');var tagFromIntent = _intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);var bind_code = _intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);bind_code = this.Bytes2HexString(bind_code);console.log("bind_code====:",bind_code)if (bind_code) {// // 标签没有被绑定进行绑定this.dataList = this.$store.state[this.keyCache];console.log('this.dataList=========', JSON.stringify(this.dataList));if (this.dataList.every(item => {return item.bind_code !== bind_code;})) {this.formData.bind_code = bind_code;// this.fromData.old==true;if (this.eventName) {this.$EventBus.$emit(this.eventName, JSON.stringify(this.formData));}setTimeout(() => {uni.navigateBack();}, 1500);} else {this.$util.confirm({title: '提示',showCancel: false,content: '该标签已经被绑定,请换一个!'}).then(res => {if (res) {setTimeout(() => {uni.navigateBack();}, 1000);}});}}//console.log(this.UID);}},//将byte[] 转为Hex,Bytes2HexString(arrBytes) {var str = '';for (var i = 0; i < arrBytes.length; i++) {var tmp;var num = arrBytes[i];if (num < 0) {//Java中数值是以补码的形式存在的,应用程序展示的十进制是补码对应真值。补码的存在主要为了简化计算机底层的运算,将减法运算直接当加法来做tmp = (255 + num + 1).toString(16);} else {tmp = num.toString(16);}if (tmp.length == 1) {tmp = '0' + tmp;}str += tmp;}return str;}}
};
</script>
} else {tmp = num.toString(16);}if (tmp.length == 1) {tmp = '0' + tmp;}str += tmp;}return str;}
}
};
uniapp中NFC功能的实现相关推荐
- uniapp使用nfc功能及详解
公司使用uniapp在android手机端要增加一个nfc识别的功能.在此记录一下实现的过程. 资料查找 我的代码逻辑主要来源于找到的这篇文章: uniapp-安卓NFC读取 - 我要找到我的全世界 ...
- 带nfc 的 android 华为,华为手机NFC功能,原来这么好用,不会用真可惜几千块钱了...
华为手机NFC功能,原来这么好用,不会用真可惜几千块钱了 2019-05-06 17:40:25 9点赞 12收藏 6评论 华为手机在国内也是数一数二的了,那么用华为手机的小伙伴,怎么能错过华为手机中 ...
- 关于uni-app手机nfc开启、读取、写入功能
关于手机开启nfc功能 nfc功能开启,分为开启手机的nfc功能和开启app的nfc功能. 那么app端会用到的nfc功能有哪些呢? 有nfc读取身份证内容,手机读取nfc签的内容,手机更改nfc签的 ...
- Vue:uniapp实现NFC标签读取功能
微信小程序官方文档中提供了调用NFC功能的基础库: NFC - wx.getNFCAdapter - <微信小程序官方开发文档(全) - 20210305> - 书栈网 · BookSta ...
- uniapp中的分享功能实现(APP,小程序,公众号)
uniapp中的分享功能实现(APP,小程序,公众号) 1.APP端的分享 app端的分享可以直接使用uniapp封装的方法uni.share,uni-app的App引擎已经封装了微信.QQ.微博的分 ...
- uniapp中使用lodop打印控件实现app广域、局域网打印功能,亲测可用
文章目录 前言 一.本文目的 二.使用步骤 1.准备工作 2.引入库文件 3.页面使用 总结 前言 在项目中使用了lodop控件,然而蛋疼的发现这玩意uniapp app端不能直接使用,在vip售后群 ...
- 微信找不到nfc功能_手机中的NFC功能不会用?试试微信“通用”中开启,网友:很实用...
众所周知,随着科技不断发展,我们所使用的智能手机功能也变得越来越多,而在早期的功能机时代,我们的手机基本只能发短信.打电话,现如今的智能手机却能够完成吃喝玩乐.衣食住行和社交.支付等等一系列的事情. ...
- 苹果nfc功能怎么开启_iOS 13系统中NFC标签已现身,苹果iPhone如何开启NFC功能?
搞机哥最近收到很多小土豪们的私信: "搞机哥,我苹果升级了iOS 13,能告诉我怎么用吗?" 当然可以,哥愿意尽哥所能,倾哥所有,不遗余力地告诉你. 苹果如何开启NFC功能,相信还 ...
- uni-app中checkbox-group实现全选功能
uni-app中checkbox-group实现全选功能 功能描述: 点击全选框,选项全被选中,再次点击,选项全不被选中 全选框选中状态下,取消任一选项,全选框不被选中,并且在全选框不被选中的状态下, ...
最新文章
- 跨专业选修C语言看什么书,跨专业考研如何选择?!!!!!
- php nginx配置范例,nginx配置文件范文
- 面试问:Kafka 为什么速度那么快?
- [SUCTF2018]babyre [ACTF新生赛2020]fungame
- UIProgressView 圆角
- win10必须禁用的服务_7寸屏的迷你电脑,就算是8GB运行内存,也必须关闭的系统选项...
- 如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?
- 第01期:salesforce开发环境的搭建
- 比特币技术Base58
- 滨江机器人餐厅_滨江机器人的视觉效果好吗?
- DevExpress报表控件v21.2 - 全新的Visual Studio报表设计器
- gtx 750 linux驱动下载,Ubuntu 12.04安装NVIDIA GTX750显卡驱动
- 什么是群发单显和分别发送,有什么区别,发客户邮件忘记群发单显
- 04年学计算机,成都电子科大计算机学院04年专业?
- 老徐和阿珍的故事:Runnable和Callable有什么不同?
- JavaScript正则表达式分组模式:捕获性分组与非捕获性分组及前瞻后顾(断言)
- vue项目中加载使用腾讯地图
- 自制可运行pe的iso
- 内存换CPU CPU换内存例子
- 天玑9000和骁龙888plus哪个好