2011-09-21 214 views
0

這是我讀取NFC標籤的代碼。爲什麼身份驗證總是失敗?它正在檢測卡,但沒有讀取數據。你可以幫我嗎?爲什麼如果塊不執行?哪裏錯了?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 
+0

沒有人幫助我。 – Santhosh

+0

這是一個新的標籤,還是之前用另一個讀者寫過的? –

+0

這不是一個新標籤。它已被另一個應用程序寫入 – Santhosh

回答

3

由於它不是一個新的標籤,並且已經被另一個應用程序寫入,我會懷疑認證密鑰已經改變。您正在使用默認密鑰,但其他應用可能已更改它們。老款諾基亞手機一直這樣做。在這種情況下,您需要確定新密鑰對於密鑰A的新密鑰是什麼,而不是使用MifareClasic.KEY_DEFAULT。

0

嘗試使用MifareClassic.KEY_NFC_FORUM作爲keyA