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功能的实现相关推荐

  1. uniapp使用nfc功能及详解

    公司使用uniapp在android手机端要增加一个nfc识别的功能.在此记录一下实现的过程. 资料查找 我的代码逻辑主要来源于找到的这篇文章: uniapp-安卓NFC读取 - 我要找到我的全世界 ...

  2. 带nfc 的 android 华为,华为手机NFC功能,原来这么好用,不会用真可惜几千块钱了...

    华为手机NFC功能,原来这么好用,不会用真可惜几千块钱了 2019-05-06 17:40:25 9点赞 12收藏 6评论 华为手机在国内也是数一数二的了,那么用华为手机的小伙伴,怎么能错过华为手机中 ...

  3. 关于uni-app手机nfc开启、读取、写入功能

    关于手机开启nfc功能 nfc功能开启,分为开启手机的nfc功能和开启app的nfc功能. 那么app端会用到的nfc功能有哪些呢? 有nfc读取身份证内容,手机读取nfc签的内容,手机更改nfc签的 ...

  4. Vue:uniapp实现NFC标签读取功能

    微信小程序官方文档中提供了调用NFC功能的基础库: NFC - wx.getNFCAdapter - <微信小程序官方开发文档(全) - 20210305> - 书栈网 · BookSta ...

  5. uniapp中的分享功能实现(APP,小程序,公众号)

    uniapp中的分享功能实现(APP,小程序,公众号) 1.APP端的分享 app端的分享可以直接使用uniapp封装的方法uni.share,uni-app的App引擎已经封装了微信.QQ.微博的分 ...

  6. uniapp中使用lodop打印控件实现app广域、局域网打印功能,亲测可用

    文章目录 前言 一.本文目的 二.使用步骤 1.准备工作 2.引入库文件 3.页面使用 总结 前言 在项目中使用了lodop控件,然而蛋疼的发现这玩意uniapp app端不能直接使用,在vip售后群 ...

  7. 微信找不到nfc功能_手机中的NFC功能不会用?试试微信“通用”中开启,网友:很实用...

    众所周知,随着科技不断发展,我们所使用的智能手机功能也变得越来越多,而在早期的功能机时代,我们的手机基本只能发短信.打电话,现如今的智能手机却能够完成吃喝玩乐.衣食住行和社交.支付等等一系列的事情. ...

  8. 苹果nfc功能怎么开启_iOS 13系统中NFC标签已现身,苹果iPhone如何开启NFC功能?

    搞机哥最近收到很多小土豪们的私信: "搞机哥,我苹果升级了iOS 13,能告诉我怎么用吗?" 当然可以,哥愿意尽哥所能,倾哥所有,不遗余力地告诉你. 苹果如何开启NFC功能,相信还 ...

  9. uni-app中checkbox-group实现全选功能

    uni-app中checkbox-group实现全选功能 功能描述: 点击全选框,选项全被选中,再次点击,选项全不被选中 全选框选中状态下,取消任一选项,全选框不被选中,并且在全选框不被选中的状态下, ...

最新文章

  1. 跨专业选修C语言看什么书,跨专业考研如何选择?!!!!!
  2. php nginx配置范例,nginx配置文件范文
  3. 面试问:Kafka 为什么速度那么快?
  4. [SUCTF2018]babyre [ACTF新生赛2020]fungame
  5. UIProgressView 圆角
  6. win10必须禁用的服务_7寸屏的迷你电脑,就算是8GB运行内存,也必须关闭的系统选项...
  7. 如何利用openssl来计算md4, md5, sha1, sha256, sha384, sha512等常用哈希值?
  8. 第01期:salesforce开发环境的搭建
  9. 比特币技术Base58
  10. 滨江机器人餐厅_滨江机器人的视觉效果好吗?
  11. DevExpress报表控件v21.2 - 全新的Visual Studio报表设计器
  12. gtx 750 linux驱动下载,Ubuntu 12.04安装NVIDIA GTX750显卡驱动
  13. 什么是群发单显和分别发送,有什么区别,发客户邮件忘记群发单显
  14. 04年学计算机,成都电子科大计算机学院04年专业?
  15. 老徐和阿珍的故事:Runnable和Callable有什么不同?
  16. JavaScript正则表达式分组模式:捕获性分组与非捕获性分组及前瞻后顾(断言)
  17. vue项目中加载使用腾讯地图
  18. 自制可运行pe的iso
  19. 内存换CPU CPU换内存例子
  20. 天玑9000和骁龙888plus哪个好

热门文章

  1. bisect模块的使用
  2. Oracle12C删除用户
  3. 入网小助手IsAgent卸载
  4. 2009最新QQ签名档荟萃...
  5. Android项目实战系列—基于博学谷(七)课程模块(上)
  6. 开启 Apple Watch 静音模式
  7. C# 中 MessageBox的使用详解
  8. FarPoint.Win.Spread 表格 鼠标悬停 展示表格数据 并且控制每行字数 代码备忘
  9. 用计算机弹梦想天空分外蓝,梦想天空分外蓝作文
  10. ,优视科技发买水货手机利用软件复电通