ここでは、NFC タグのレコードを読み取る android アプリを開発しています。これは、タグを読み取るための私のプログラムのコードの一部です。読み取り時に、範囲外の例外が発生します。
NdefMessage[] msgs = null;
String action = intent.getAction();
if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)||
NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)){
Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
if(rawMsgs != null){
msgs = new NdefMessage[rawMsgs.length];
for(int i=0; i<rawMsgs.length; i++){
msgs[i] = (NdefMessage) rawMsgs[i];
}
}else{
byte[] empty = new byte[]{};
NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty);
NdefMessage msg = new NdefMessage(new NdefRecord[]{record});
msgs = new NdefMessage[]{msg};
}
}
if(msgs==null){
String[] array = new String[]{"No Tag discovered!"};
return array;
}else{
String[] array = new String[]{new String(msgs[0].getRecords()[0].getPayload()),
new String(msgs[1].getRecords()[0].getPayload())
};
return array;
}
この「new String( msgs 1 .getRecords()[0].getPayload())」という文を非表示にすると、プログラムがスムーズに実行されるので、プログラムがこの行にあることは間違いありません。どうすれば問題を解決できますか?