Android使用手机NFC的读取NFC标签数据的方法

  

  

一部有nfc的手机,一张有nfc标签的卡

  

  

nfc(近距离无线通讯技术),是由非接触式射频识别(RFID)及互连互通技术整合演变而来,通过在单一芯片上集成感应式读卡器,感应式卡片和点对点通信的功能,利用移动终端实现移动支付,电子票务,门禁,移动身份识别,防伪等应用。

  

  

<强> 3 - 1在清单添加权限:

  

在xml里添加nfc的使用权限

        & lt; uses-permission android: name=" android.permission。NFC "/祝辞      

这个是限制安装权限,只给有nfc功能的手机安装(可选)

        & lt; uses-feature android: name=" android.hardware。nfc“android:=" true "/祝辞      

<强> 3 - 2 nfc的过滤方式有以下:

  
      <李> ACTION_NDEF_DISCOVERED,李   <李> ACTION_TECH_DISCOVERED,李   <李> ACTION_TAG_DISCOVERED三种。过滤器的作用是过滤掉杂质,剩下的就是我们需要的了。这三种过滤方式可同时配置,可以比方成从上到下三层,只要是符合某一层过滤器要求的,过滤完就停止往下一层。   
  

在活动的过滤器里面添加对应需要的权限:

  

ACTION_NDEF_DISCOVERED,         & lt; activity>   …   & lt; intent-filter>   & lt;行动android: name=" android.nfc.action。NDEF_DISCOVERED”/比;   & lt;/intent-filter>   …   & lt;/activity>   之前      

ACTION_TECH_DISCOVERED:

  

在& lt; project-root>/res/xml(自己新建xml文件夹)下新建一个nfc_tech_filter.xml文件,添加进你需要支持的标签类型。(下面的配置项可多选)。下列示例是支持与NfcA和Ndef技术的NFC标签匹配。

        & lt;资源xmlns: xliff=" urn: oasis: names: tc: xliff:文档:1.2”比;   & lt; tech-list>   祝辞& lt;资源;   & lt; tech-list>   & lt; !——& lt; tech> android.nfc.tech.IsoDep——比;   & lt; tech> android.nfc.tech.NfcA   & lt; !——& lt; tech> android.nfc.tech.NfcB——比;   & lt; !——& lt; tech> android.nfc.tech.NfcF——比;   & lt; !——& lt; tech> android.nfc.tech.NfcV——比;   & lt; tech> android.nfc.tech.Ndef   & lt; !——& lt; tech> android.nfc.tech.NdefFormatable——比;   & lt; !——& lt; tech> android.nfc.tech.MifareClassic——比;   & lt; !——& lt; tech> android.nfc.tech.MifareUltralight——比;   & lt;/tech-list>   & lt;/resources>   & lt;/tech-list>   & lt;/resources>   & lt; activity>   …   & lt; intent-filter>   & lt;行动android: name=" android.nfc.action。TECH_DISCOVERED”/比;   & lt;/intent-filter>      & lt;元数据   android: name=" android.nfc.action.TECH_DISCOVERED "   android:资源=癅xml/nfc_tech_filter”/比;      & lt;元数据android: name=" android.nfc.action.TECH_DISCOVERED "   android:资源=癅xml/nfc_tech_filter”/比;   …   & lt;/activity>   ACTION_TAG_DISCOVERED,可以添加如下权限      & lt; activity>   ···   & lt; intent-filter>   & lt;行动android: name=" android.nfc.action。TAG_DISCOVERED”/比;   & lt;/intent-filter>   ···   & lt;/activity>      之前      

<强> 3 - 3识别标签的顺序

  

 Android使用手机NFC的读取NFC标签数据的方法

  

  

1初始化nfc工具,判断是否存在nfc和nfc是否打开

  

2感应到nfc标签后,读取解析对应nfc类型的标签数据

  

3回传显示

  

代码如下:

        公开课NfcActivity延伸活动{      私有静态最终字符串标签=癗fcActivity”;   私人TextView tvNFCMessage;   私人PendingIntent mPendingIntent;   私人NfcAdapter mNfcAdapter;   私人按钮btnClean;      @Override   保护空白>//初次判断是什么类型的NFC卡   公共静态NdefMessage [] getNdefMsg(目的意图){   如果(意图==null)   返回null;//nfc卡支持的格式   标签标签=intent.getParcelableExtra (NfcAdapter.EXTRA_TAG);   String [] temp=tag.getTechList ();   (字符串s: temp) {   日志。我(标签,“resolveIntent标签:”+ s);   }         字符串action=intent.getAction ();      如果(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(行动)| |   NfcAdapter.ACTION_TECH_DISCOVERED.equals(行动)| |   NfcAdapter.ACTION_TAG_DISCOVERED.equals(行动)){   Parcelable [] rawMessage=intent.getParcelableArrayExtra (NfcAdapter.EXTRA_NDEF_MESSAGES);   NdefMessage [] ndefMessages;//判断是哪种类型的数据默认为NDEF格式   如果(rawMessage !=null) {   日志。我(标签,“getNdefMsg: ndef格式”);   ndefMessages=new NdefMessage [rawMessage.length];   for (int i=0;我& lt;rawMessage.length;我+ +){   ndefMessages[我]=(NdefMessage) rawMessage[我];   }   其他}{//未知类型(公交卡类型)   日志。我(标签,“getNdefMsg:未知类型”);//对应的解析操作,在Github上有   }         返回ndefMessages;   }      返回null;   }      

Android使用手机NFC的读取NFC标签数据的方法