Android NFC标签读取问题

Android NFC标签读取问题,android,authentication,nfc,Android,Authentication,Nfc,这是我读取NFC标签的代码。为什么身份验证总是失败?它正在检测卡,但没有读取数据。你能帮帮我吗?为什么不执行块?我错在哪里 void resolveIntent(Intent intent) { String action = intent.getAction(); if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)) { Tag tagFromIntent = intent.getParcelableExtra(NfcAdap

这是我读取NFC标签的代码。为什么身份验证总是失败?它正在检测卡,但没有读取数据。你能帮帮我吗?为什么不执行块?我错在哪里

void resolveIntent(Intent intent)
{ 
String action = intent.getAction();

if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(action))
{ 
    Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

    MifareClassic mfc = MifareClassic.get(tagFromIntent); 
    byte[] data;

    try
    {    
        mfc.connect();
        boolean auth = false;
        String cardData = "";

        int sectorCount = mfc.getSectorCount();
        int blockCount = 0;
        int blockIndex = 0;
        for(int j = 0; j < sectorCount; j++)
        { 
            auth = mfc.authenticateSectorWithKeyA(j, MifareClassic.KEY_DEFAULT);
            if(auth)
            {

                blockCount = mfc.getBlockCountInSector(j);
                blockIndex = 0;
                for(int i = 0; i < blockCount; i++)
                {
                    blockIndex = mfc.sectorToBlock(j);

                    data = mfc.readBlock(blockIndex);    

                    cardData = cardData + getHexString(data, data.length);
                    blockIndex++;
                }
            }

            else
            { 
                // Authentication failed - Handle it
                showAlert(AUTH); //this alert message is executing always
            }
        } 
        Toast.makeText(getApplicationContext(), cardData, Toast.LENGTH_LONG).show();
    }
    catch (IOException e)
    { 
        Log.e(TAG, e.getLocalizedMessage());
        showAlert(NETWORK);
    }
   }//end of if
}// End of method
无效解析意图(意图)
{ 
String action=intent.getAction();
如果(NfcAdapter.ACTION\u TECH\u DISCOVERED.equals(ACTION))
{ 
tagFromIntent=intent.getParcelableExtra(NfcAdapter.EXTRA_标记);
MifareClassic mfc=MifareClassic.get(tagFromIntent);
字节[]数据;
尝试
{    
mfc.connect();
布尔auth=false;
字符串cardData=“”;
int sectorCount=mfc.getSectorCount();
int blockCount=0;
int blockIndex=0;
对于(int j=0;j
由于它不是新标签,并且是由另一个应用程序编写的,因此我怀疑身份验证密钥已更改。您正在使用默认键,但其他应用程序可能已更改它们。老款诺基亚手机一直都在这样做。在这种情况下,您需要了解keyA的新密钥是什么,而不是使用MifareClasic.KEY\u DEFAULT,因为它不是新标签,并且是由另一个应用程序编写的,我怀疑身份验证密钥已更改。您正在使用默认键,但其他应用程序可能已更改它们。老款诺基亚手机一直都在这样做。在这种情况下,您需要确定keyA的新密钥是什么,而不是使用MifareClasic.KEY\u DEFAULT,尝试使用MifareClassic.KEY\u NFC\u FORUM作为
keyA

尝试使用
MifareClassic.KEY\u NFC\u论坛
作为
keyA

它是一个新标签还是以前用另一个读卡器写入的?它不是一个新标签。它是由另一个应用程序写入的。它是一个新标记还是以前用另一个读卡器写入的?它不是一个新标记。它是由另一个应用程序编写的