0

Mifare Classic 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;
    }
}

Eclipseはこの行について私に警告を出し続けます

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

、その時点でのみnullになる可能性があると言っています...私の質問は、この警告が消えるようにこのコードを書き直すにはどうすればよいですか?

4

2 に答える 2

0
sevenDigits

nullとして定義され、変更されません。あなたはおそらく電話する必要があります

sevenDigits = new byte[data.length];

ループの前

于 2012-09-20T07:56:38.737 に答える
0

SevenDigits []をnullとして宣言する場合は、使用する前にサイズで初期化する必要があります

sevenDigits[] = new byte[size];

イテレータの静的な値を長さに使用しないでください。forループで使用する配列の長さを使用してください。

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

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

        for (int i =0; i < data.length; i++){
            sevenDigits[i] = data[i];
        }
于 2012-09-20T07:57:14.767 に答える