2012-09-20 5 views
0

나는 MIFARE 클래식 1K 카드의 UID를 검색하기 위해 노력하고, 그리고 그것을 위해 나는이 코드를 사용합니다이클립스 - 안드로이드

private String getUID(){ 
    MifareClassic mfc = MifareClassic.get((Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)); 
    byte[] data; 
    byte[] sevenDigits = null; 
    String uid; 

    try{ 
     mfc.connect(); 
     boolean auth = false; 
     auth = mfc.authenticateSectorWithKeyA(0, MifareClassic.KEY_DEFAULT); 

     if(auth){ 
      data = mfc.readBlock(mfc.sectorToBlock(0)); 


      for (int i =0; i < 8; i++){ 
       sevenDigits[i] = data[i]; 
      } 

      return getHexString(sevenDigits); 
     } else { 
      return "Authenticatie mislukt"; 
     } 

    } catch (IOException e) { 
     return null; 
    } 
} 

이클립스는이 라인에 대해 나에게 경고를주는 유지를

for (int i = 0; i < 8; i++) { 
    sevenDigits[i] = data[i]; 
} 

그 시점에서 null 일 수 있다고 말하면서 ... 내 질문은 :이 경고가 사라지도록이 코드를 어떻게 다시 작성해야합니까?

답변

0
sevenDigits 

은 null로 정의되고 수정되지 않습니다. 당신은 아마

+0

고마워요. 이것으로 해결했습니다. –

0

당신은 당신이 정적을 사용하지 않는

sevenDigits[] = new byte[size]; 

그것을 사용하기 전에 sevenDigits은 [] 널 당신이 크기에 의해이를 초기화해야 선언 루프 전에

sevenDigits = new byte[data.length]; 

를 호출해야 길이에 대한 반복자의 값은 루프에 사용할 배열의 길이를 사용합니다.

data = mfc.readBlock(mfc.sectorToBlock(0)); 

sevenDigits[] = new byte[data.length]; 

     for (int i =0; i < data.length; i++){ 
      sevenDigits[i] = data[i]; 
     } 
+0

감사합니다. –

관련 문제