NFC讀卡在fragment中的應用

2021-08-20 01:21:11 字數 1517 閱讀 3855

今天獨山子巡檢更換了新終端,隨之而來的問題是之前rfid標籤讀取硬體(之前是通過介面直接獲取)沒有了,而是用了nfc模組,然後就看了看api,以及google了下。使用很簡單,就三個步驟:

first

在mainifest檔案宣告許可權以及在目標activity下新增action,這些api都有,如下

許可權宣告

目標activity下新增...

...nfc-tech-filter 檔案是res/xml檔案下自建

有兩種方式

1、android.nfc.tech.isodep

android.nfc.tech.nfca

android.nfc.tech.nfcb

android.nfc.tech.nfcf

android.nfc.tech.nfcv

android.nfc.tech.ndef

android.nfc.tech.ndefformatable

android.nfc.tech.mifareclassic

android.nfc.tech.mifareultralight

2、android.nfc.tech.nfca

android.nfc.tech.ndef

android.nfc.tech.nfcb

android.nfc.tech.ndef

我的理解是這樣:第一種是&的關係,第二種是||的關係,即第一種需要都支援,才能跳轉,而第二種只要支援一種就能跳轉

second

在目標activity的oncreate()中獲取nfcadapter例項

adapter = nfcadapter.getdefaultadapter(this)

if(adapter==null)

if(!adapter!!.isenabled)

third

在onresume()方法中獲取標籤值

val tagfromintent = intent.getparcelableextra(nfcadapter.extra_tag)

val uidbytes = tagfromintent.getid()

val uid :string? = bytestohexstring(uidbytes)

實際問題

每次刷標籤的時候,目標activity宣告週期都會執行一次,以至於依附在activity上的fragment都會重新重新整理,之前的資料都會清除,不能達到巡檢時候指定頁面不變,只獲取標籤資料的目的。

解決辦法

首先把目標activity的啟動模式改為singletask,然後在目標activity的onnewintent(intent intent)中寫讀取標籤的邏輯。然後通過事件匯流排框架(eventbus)傳送到指定fragment接受即可,至此,問題解決。

Android NFC讀卡以及NFC的三種模式

第一步新增許可權 第二步 在需要讀取卡內容的地方寫下面的內容 suppresslint newapi override protected void onresume suppresslint newapi override protected void onpause override prote...

framelayout中fragment的切換

我們在android開發中經常會用到fragment,例如側拉欄的切換,viewpager的切換。而我們切換fragment無非就兩種方法 1.replace 2.add hide show 兩種發方法相比較而言,我更加推薦使用第二種方法,因為fragmenttanslation的replace 方...

viewpager 中fragment 的生命週期

最近自己做點小專案練練手,用的是 viewpager fragment fragmentpageradapter介面卡 這樣乙個框架 首先普及一下fragment的生命週期 注意 下面我說的生命週期特指從onattach到onresume。結果除錯程式的時候發現乙個莫名其妙的事情,viewpager...