uni app呼叫NFC讀寫加密扇區功能。

2022-09-08 18:39:11 字數 4034 閱讀 4596

1.先新建乙個nfc.js檔案。

let context = plus.android.importclass("android.content.context");

let nfcmanager = plus.android.importclass("android.nfc.nfcmanager");

let nfcadapter = plus.android.importclass("android.nfc.nfcadapter");

let settings= plus.android.importclass("android.provider.settings");

let intent = plus.android.importclass("android.content.intent");

let parcelable = plus.android.importclass("android.os.parcelable");

let intentfilter = plus.android.importclass('android.content.intentfilter');

let ndefrecord = plus.android.importclass("android.nfc.ndefrecord");

let ndefmessage = plus.android.importclass("android.nfc.ndefmessage");

let tag = plus.android.importclass("android.nfc.tag");

let mifareclassic = plus.android.importclass("android.nfc.tech.mifareclassic");

let invoke = plus.android.invoke;

const nfc=,

//初始化

into:function ()

var intent = new intent(this.data.main, this.data.main.getclass());

intent.addflags(intent.flag_activity_single_top);

var pendingintent = pendingintent.getactivity(this.data.main, 0, intent, 0);

var ndef = new intentfilter("android.nfc.action.tech_discovered");

ndef.adddatatype("*/*");

var intentfiltersarray = [ndef];

nfcadapter.enableforegrounddispatch(this.data.main, pendingintent, intentfiltersarray, this.data.techlistsarray);

this.data.nfcadapter=nfcadapter;

},//取消操作

nfcclose:function(),

//輪詢獲取當前nfc裝置觸發的事件

handle_nfc_data:function()

else}},

//讀取裝置

_readdata:function(intent), 2000);

var tag = intent.getparcelableextra(nfcadapter.extra_tag);

var techlist = tag.gettechlist();

var bismfc=false;

for(var i=0;i

<

techlist

.length;i++)

}if(!bismfc));

return;

}var mfc=mifareclassic.get(tag);

if(!mfc));

return;

}mfc.settimeout(3000);

if(!mfc.isconnected())catch(e));

return;}}

tryelse

if(!auth));

return;

}var arr=

for (var i = 0; i

<

4; i++)

mfc.close();

uni.showmodal();

this.data.callback(arr)

}catch(e)finally

},//寫入資料

_writedata:function(intent));

var tag

= intent.getparcelableextra(nfcadapter.extra_tag);

var techlist

= tag.gettechlist();

var bismfc

=false;

for(var i

=0;iif(techlist[i].indexof('mifareclassic')

>

=0) }

if(!bismfc));

return;

}var mfc=mifareclassic.get(tag);

if(!mfc));

return;

}mfc.settimeout(3000);

if(!mfc.isconnected())catch(e));

return;}}

tryelse

if(!auth));

return;

}//開始寫入指定塊

"11111111100000000000000000000000"));

mfc.writeblock(this.data.block,this.hexstringtobytearray(this.data.writedata));

//驗證是否寫入成功

var data = mfc.readblock(this.data.block);

console.log(this.bytearraytohexstring(data))

console.log(this.data.writedata)

if(this.bytearraytohexstring(data)===this.data.writedata)

);this.data.callback()

}else)

}}catch(e)finally

},bytearraytohexstring:function(inarray)

return out;

},hexstringtobytearray:function(instr)

return hexa;

},//對外開放的讀取事件

readdata:function());

this.data.status="read"

var that=this

this.data.intervalid = setinterval(function(),1000);

},//對外開放的寫入事件

//傳乙個需要寫入的資料

writedata:function(value));

if(value.length>32));}

for(var i=value.length;i

<

32;i++)

console.log(value);

console.log(value.length)

this.data.writedata

=value

var that

=this

this.data.intervalid

= setinterval(function(),1000);

}}export default nfc

2.呼叫demo

讀卡操作

輸入需要寫入的內容

寫卡操作}

NFC標籤的讀寫

最近公司要求完成乙個利用nfc標籤管理倉庫庫存的乙個iot專案,要求手機從伺服器獲取的資料後,將資料寫入nfc標籤中。其實主要的核心還是利用讀卡器模式對nfc標籤的讀寫。具體如下 1.許可權的配置 android name android.permission.nfc android name an...

uni app 呼叫訊飛語音。

訊飛語音輸入介面 voice options.engine ifly options.punctuation false 是否需要標點符號 options.timeout 10 1000 plus.speech.startrecognize options,function s 普通瀏覽器裡沒有pl...

uni app使用DES加密解密資料

1 開啟hbuilderx的檢視 顯示終端 cd 切換到你專案的根目錄 執行命令 npm install crypto js 安裝成功後你的專案根目錄會生成node modules資料夾,裡面有crypto js就說明成功了 2 接下來在哪使用就直接import cryptojs from node...