Ndef.get(tag)返回null - Android中的Mifare支持

时间:2017-10-05 09:51:52

标签: android nfc mifare

返回的

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?我无法在线找到源代码。

1 个答案:

答案 0 :(得分:1)

  1. Ndef对象是由包含android.nfc.tech.Ndef的标签技术列表制成的 由于您使用的卡没有此卡,因此该对象始终为null。 尝试使用技术列表中有android.nfc.tech.Ndef的卡片,您将得到该物体。

  2. 您可以通过标签中的技术人员列表来检查设备是否为mifare。查找android.nfc.tech.MifareClassic,列表中具有该技术的卡就是Mifareclassic卡。

  3. 要读写Mifare经典卡,您的设备必须具有nxp ic(所有RFID芯片主要需要NFC,但对于mifare则特别需要nxp)。 您可以通过以下代码检查设备是否具有nxp ic:

    getPackageManager().hasSystemFeature("com.nxp.mifare");
    
  4. 是的,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