Проблема чтения тега NFC - PullRequest
       14

Проблема чтения тега NFC

0 голосов
/ 21 сентября 2011

Это мой код для чтения тега 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

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Поскольку это не новый тег и был написан другим приложением, я подозреваю, что ключ аутентификации изменился.Вы используете ключи по умолчанию, но другое приложение, возможно, изменило их.Старые телефоны Nokia делают это постоянно.В этом случае вместо использования MifareClasic.KEY_DEFAULT вам необходимо выяснить, что представляет собой новый ключ для ключа A

0 голосов
/ 23 февраля 2012

Попробуйте использовать MifareClassic.KEY_NFC_FORUM в качестве keyA.

...