<uses-permission android:name="android.permission.NFC" /> 

 <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="14" /> 

 <uses-feature android:name="android.hardware.nfc" android:required="true" /> 

可以理解为当检测到一个NFC标签时,系统自动创建一个相关的Intent对象,含有响应intent filter的Activity将处理这个Intent。
其中,intent filter声明如下:(在AndroidManifest.xml中声明在你需要捕获这个Intent的Activity里)(如下是识别NDEF格式的标签):

 <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED" ></action> <category android:name="android.intent.category.DEFAULT" ></category> <data android:mimeType="text/plain" ></data> </intent-filter> 

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_write); nfcTView=(TextView)findViewById(R.id.info_tv); nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) { nfcTView.setText("设备不支持NFC!"); finish(); return; } if (nfcAdapter!=null&&!nfcAdapter.isEnabled()) { nfcTView.setText("请在系统设置中先启用NFC功能!"); finish(); return; } } @Override protected void onResume() { super.onResume(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { readFromTag(getIntent()); } } 

 private boolean readFromTag(Intent intent){ Parcelable[] rawArray = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); NdefMessage mNdefMsg = (NdefMessage)rawArray[0]; NdefRecord mNdefRecord = mNdefMsg.getRecords()[0]; try { if(mNdefRecord != null){ readResult = new String(mNdefRecord.getPayload(),"UTF-8"); return true; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); }; return false; } 

简单说一下NDEF格式:一个NDEF格式的标签使用一个NdefMessage来包装,一个NdefMessage由0个或多个NdefRecord组成,其中有各种各样的NdefRecord,比如放Url的,放文本信息的等等,这里介绍的是放文本信息的NdefRecord的格式:
一个NdefRecord由四个字段构成:3-bit TNF:类型名称格式,可变长度类型RTD:记录类型定义,可变长度ID:唯一标识该记录,可变长度的负载:就是文本信息

 @Override protected void onResume() { super.onResume(); if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) { Tag tag=getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG); Ndef ndef=Ndef.get(tag); try { ndef.connect(); NdefRecord ndefRecord=createTextRecord(data,Locale.US,true); NdefRecord[] records={ndefRecord}; NdefMessage ndefMessage=new NdefMessage(records); ndef.writeNdefMessage(ndefMessage); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (FormatException e) { <span style="white-space:pre"> </span>// TODO Auto-generated catch block <span style="white-space:pre"> </span>e.printStackTrace(); } } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。

您可能感兴趣的文章:

  • Android实现读取NFC卡的编号
  • android中NFC读写功能的实现方法
  • Android实现NFC读取校园卡
  • android实现NFC读写功能
  • Android 使用手机NFC的读取NFC标签数据的方法
  • 深入分析Android NFC技术 android nfc开发
  • Android实现读取NFC卡卡号示例
  • android nfc常用标签读取总结
  • android模拟器开发和测试nfc应用实例详解
  • Android开发实现NFC刷卡读取的两种方式