1。 ndef
对象始终为 null 。
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.d(TAG, "onNewIntent: "+intent.getAction());
Toast.makeText(this, getString(R.string.message_tag_detected), Toast.LENGTH_SHORT).show();
Ndef ndef = Ndef.get(tag);
ndef.connect();
Tag
对象返回
TAG: Tech [android.nfc.tech.IsoDep, android.nfc.tech.NfcA, android.nfc.tech.NdefFormatable]
2. 我有一张嵌有NFC的阿联酋居民身份证,可以使用此代码进行扫描吗?是Mifare吗?
3. 在Play商店使用NFC TagInfo应用,扫描结果会发出警告
您的设备不支持Mifare Classic!
4. Android是否完全支持Mifare?我无法在线找到源代码。
答案 0 :(得分:1)
Ndef对象是由包含android.nfc.tech.Ndef
的标签技术列表制成的
由于您使用的卡没有此卡,因此该对象始终为null。
尝试使用技术列表中有android.nfc.tech.Ndef
的卡片,您将得到该物体。
您可以通过标签中的技术人员列表来检查设备是否为mifare。查找android.nfc.tech.MifareClassic
,列表中具有该技术的卡就是Mifareclassic卡。
要读写Mifare经典卡,您的设备必须具有nxp ic(所有RFID芯片主要需要NFC,但对于mifare则特别需要nxp)。 您可以通过以下代码检查设备是否具有nxp ic:
getPackageManager().hasSystemFeature("com.nxp.mifare");
是的,Andriod为Mifare经典卡提供了全面支持。我知道没有像以前一样的简单代码。 但是该代码可用,您可以在Google代码中查看所有NFC卡,并在此处提取所需的卡类型: https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/nfc/tech/MifareClassic.java
或访问我的存储库以获取确切的工作代码,以在此处扫描Mifare Classic卡: https://github.com/codes29/RFIDReader/blob/master/app/src/main/java/com/codes29/rfidreader/MainActivity.java