介绍
在现代社会,近场通信(NFC)技术已经被广泛应用于手机支付、门禁卡、公交卡等领域。作为一名Android开发者,我们可以利用NFC功能来读取NFC卡号,并根据具体业务需求进行相应的处理。
本篇博客将介绍如何在Android应用中使用NFC功能,以读取NFC卡号为例,帮助读者更好地理解和使用NFC技术。
步骤
步骤一:声明权限和Intent过滤器
在AndroidManifest.xml文件中,需要声明以下权限:
<uses-permission android:name="android.permission.NFC" />
同时,需要在需要使用NFC功能的Activity中声明过滤器,以过滤出NFC卡片的Intent:
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
步骤二:创建nfc_tech_filter.xml文件
在res/xml目录下,创建nfc_tech_filter.xml文件,并配置需要过滤的NFC技术(例如:MifareClassic):
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.MifareClassic</tech>
</tech-list>
</resources>
步骤三:处理Intent
在Activity的onCreate方法中,处理收到的NFC卡片Intent:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
handleNfcIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleNfcIntent(intent);
}
private void handleNfcIntent(Intent intent) {
if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
if (tag != null) {
byte[] tagId = tag.getId();
String hexDump = bytesToHex(tagId); // 将字节数组转换为十六进制字符串
// 处理NFC卡号
// ...
}
}
}
private String bytesToHex(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}
步骤四:启用NFC
在Activity的onResume方法中,启用NFC功能:
@Override
protected void onResume() {
super.onResume();
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter != null) {
nfcAdapter.enableForegroundDispatch(this, PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0), null, null);
}
}
步骤五:禁用NFC
在Activity的onPause方法中,禁用NFC功能:
@Override
protected void onPause() {
super.onPause();
NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
if (nfcAdapter != null) {
nfcAdapter.disableForegroundDispatch(this);
}
}
总结
通过以上步骤,我们可以在Android应用中使用NFC功能,读取NFC卡号,并根据具体业务需求进行处理。NFC技术的应用将为我们的生活带来更多的便利,期待开发者们能够充分发挥其潜力,创造更多有趣和实用的NFC应用。
希望本篇博客能为读者提供一些关于Android读取NFC卡号的帮助。如有任何问题,欢迎留言讨论。
参考资料:
本文来自极简博客,作者:倾城之泪,转载请注明原文链接:Android读取NFC卡号