自己写段程序写Uri进Tag,很简单:
import java.io.IOException;
import java.nio.charset.Charset;
import android.content.Context;
import android.nfc.FormatException;
import android.nfc.NdefMessage;
import android.nfc.NdefRecord;
import android.nfc.Tag;
import android.nfc.TagLostException;
import android.nfc.tech.Ndef;
import android.nfc.tech.NdefFormatable;
import android.widget.Toast;
public class NFC {
public static boolean writeTag(Context context, Tag tag) {
NdefRecord relayRecord = new NdefRecord(
NdefRecord.TNF_ABSOLUTE_URI ,
"zoeice://com.zoeice.example/applicationUp".getBytes(Charset.forName("US-ASCII")),
new byte[0], new byte[0]);
// Complete NDEF message with both records
NdefMessage message = new NdefMessage(new NdefRecord[] {relayRecord});
try {
// If the tag is already formatted, just write the message to it
Ndef ndef = Ndef.get(tag);
if(ndef != null) {
ndef.connect();
// Make sure the tag is writable
if(!ndef.isWritable()) {
Toast.makeText(context, "nfcReadOnlyErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
}
// Check if there's enough space on the tag for the message
int size = message.toByteArray().length;
if(ndef.getMaxSize() < size) {
Toast.makeText(context, "nfcReadOnlyErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
}
try {
// Write the data to the tag
ndef.writeNdefMessage(message);
Toast.makeText(context, "nfcWrittenTitle", Toast.LENGTH_SHORT ).show();
return true;
} catch (TagLostException tle) {
Toast.makeText(context, "nfcTagLostErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
} catch (IOException ioe) {
Toast.makeText(context, "nfcFormattingErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
} catch (FormatException fe) {
Toast.makeText(context, "nfcFormattingErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
}
// If the tag is not formatted, format it with the message
} else {
NdefFormatable format = NdefFormatable.get(tag);
if(format != null) {
try {
format.connect();
format.format(message);
Toast.makeText(context, "nfcWrittenTitle", Toast.LENGTH_SHORT ).show();
return true;
} catch (TagLostException tle) {
Toast.makeText(context, "nfcTagLostErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
} catch (IOException ioe) {
Toast.makeText(context, "nfcFormattingErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
} catch (FormatException fe) {
Toast.makeText(context, "nfcFormattingErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
}
} else {
Toast.makeText(context, "nfcNoNdefErrorTitle", Toast.LENGTH_SHORT ).show();
return false;
}
}
} catch(Exception e) {
Toast.makeText(context, "nfcUnknownErrorTitle", Toast.LENGTH_SHORT ).show();
}
return false;
}
}
然后再activity中重写:
@Override
protected void onNewIntent(Intent intent){
if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())){
mytag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NFC.writeTag(ctx, mytag);
Toast.makeText(this, "ok_detection" + mytag.toString(), Toast.LENGTH_LONG ).show();
}
}
识别Tag的方法是在AndroidManifest.xml中加入:
<activity android:name="com.carcon.navi.naviscreen.NaviViewManager" android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
<category android:name="android.intent.category.LAUNCHER"></category>
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="zoeice" android:host="com.zoeice.example" android:path="/applicationUp"/>
</intent-filter>
</activity>
分享到:
相关推荐
这里需要注意,不是所有NFC标签都支持写入操作,需要确保标签是可写的,并且有足够的空间存储数据。 在开发过程中,可以使用Android的`Tag`类获取关于NFC标签的更多信息,如ID、类型等。此外,为了提供更好的用户...
NFCForum-TS-RTD_URI_1.0.pdf NFCForum-TS-Signature_RTD-1.0.pdf 04. Reference Application Technical Specifications NFCForum-TS-ConnectionHandover_1_2.pdf 05. Protocol Technical Specifications NFC...
NFC URI Record Type Definition Technical Specification.pdf NFCForum-TS-ConnectionHandover-1.3.pdf NFCForum-TS-DigitalProtocol-1_1.pdf NFCForum-TS-LLCP-1_2.pdf NFCForum-TS-Type-2-Tag_1.2.pdf Simple ...
- **`Tag`**:表示一个物理NFC标签,包含了与该标签相关的NFC技术类型和标识信息。 - **`NdefMessage`**:用于封装一组NDEF记录,每个记录可以包含不同类型的数据。 - **`NdefRecord`**:代表一个NDEF记录,包含了...
在这个“NFC读写标签Demo”中,我们探讨的是如何通过Android应用程序实现对NFC标签的读取与写入功能,尤其侧重于NDEF(NFC Data Exchange Format)格式的应用。 NDEF是一种标准化的数据交换格式,它允许不同的设备...
Log.e("NFC", "Error writing to tag", e); Toast.makeText(this, "无法写入标签", Toast.LENGTH_SHORT).show(); } } ``` 6. **处理权限请求** Android 6.0及以上版本需要运行时权限,确保在`AndroidManifest...
Android SDK提供了`NfcManager`类,它是与NFC硬件交互的主要接口。通过`getSystemService(NFC_SERVICE)`方法可以获取到`NfcManager`实例。此外,我们还需要`Ndef`类来处理NDEF(NFC Data Exchange Format)数据,这...
NFC论坛定义了一系列标准类型,如文本、URI、智能海报(Smart Poster,包含多个动作,如跳转到网站、拨打电话等)等,同时允许扩展自定义类型。 3. **技术协议(Technology Protocols)**:NFC支持多种通信模式,如...
在读/写模式下,Android设备可以读取或写入NDEF(NFC数据交换格式)消息到NFC标签。 要实现Android应用的NFC读取功能,需要进行以下步骤: 1. **启用NFC权限**: 在AndroidManifest.xml文件中添加以下权限: ```...
开发者可以使用`NfcAdapter`来管理NFC的读写操作,`Tag`对象表示与设备交互的物理NFC标签,`Ndef`类则用于处理NDEF格式的数据。 2. **读取NDEF标签**:应用可以通过`NfcAdapter.enableReaderMode()`开启读取模式,...
NFC,Near Field Communication,近场通信技术,基于RFID理论,将非接触式读卡器、非接触卡和点对点功能整合进一块单芯片 NFC工作原理同RFID 相似,利用频谱中无线频率的电磁感应耦合方式传递信息,现只工作在13.56...
总的来说,这个"Android NFC 读卡demo"涵盖了Android开发中与NFC相关的基础内容,包括权限配置、广播接收器、读者模式、卡片技术识别以及扇区数据读取。通过学习和实践这个示例,开发者可以掌握如何在Android应用中...
Tag1、Tag2、Tag3和Tag4代表了不同的NFC标签类型,它们基于不同的技术标准,如ISO/IEC 14443、FeliCa等。这些标签具有不同的存储容量、数据传输速度和安全性特性。理解不同类型的NFC标签有助于选择适合特定应用场景...
NFC(Near Field Communication,近场通信)技术是一种短距离无线通信技术,它结合了非接触式射频识别(RFID)与互连技术,旨在简化数据交换、设备配对和移动支付等任务。NFC在日常生活中广泛应用于手机、智能卡、...
2. **支付与票务**:NFC标签可以用于无接触支付,如Apple Pay、Google Pay,以及公共交通的电子票务。 3. **设备配对**:NFC可以快速建立蓝牙或Wi-Fi连接,简化设备之间的配对过程。 4. **信息交换**:用户可以通过...
首先,需要获取到系统的NFC适配器,然后监听`ACTION_TAG_DISCOVERED`意图,当标签靠近设备时,会触发对应的回调函数,从中可以获取标签的信息。 4. **写入NFC标签**: 写入数据到NDEF(NFC Data Exchange Format)...
NFC(Near Field Communication,近场通信)是一种短距离无线通信技术,源于非接触式射频识别(RFID)。这项技术允许电子设备在极近的距离内进行数据交换,通常在4厘米(1.5英寸)的范围内。NFC在移动支付、门禁控制...
5. **Tag** 类:代表一个物理NFC标签,提供了与标签交互的方法,如读取或写入数据。 现在,我们来看一下`nfc-reader-master`项目中的关键代码片段: 1. **初始化NFC**: 在活动中,首先获取`NfcAdapter`,并检查...
开发者可以通过Android的API,如NFCAdapter和NFCTag类,来编写与NFC相关的应用。 在"Android NFC应用:触碰NFC标签打开设置的应用"这个场景下,NFCRunAPP可能包含以下关键知识点: 1. **NDEF(NFC Data Exchange ...
7. **NDEF Tag Operations API**:Android 4.4(KitKat)引入了Tag Operations API,简化了与不同类型的NFC标签交互的过程。开发者可以使用这个API来识别标签类型,执行特定于标签的操作,如读写Mifare Classic或...