Android读取NFC卡号

倾城之泪 2024-05-20 ⋅ 29 阅读

介绍

在现代社会,近场通信(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卡号的帮助。如有任何问题,欢迎留言讨论。

参考资料:


全部评论: 0

    我有话说: