Mifare 클래식 1k 카드의 데이터를 Nexus S에서 android 2.3.3 API 레벨 10으로 쓰려고 할 때 다음과 같이합니다. 오류. 송수신에 실패했습니다. 내 코드는 직접 MIFARE 카드의 낮은 수준의 블록에 NDEF 데이터를 기록하려고하는 것 같다Mifare Classic 1k 카드 쓰기가 오류 java.ioexception과 함께 실패했습니다. Android Nexus S에서 송수신에 실패했습니다
private View.OnClickListener write_butClickListener =new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentFilter ndef=new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
try{
ndef.addDataType("*/*");
}catch(MalformedMimeTypeException e){
throw new RuntimeException("fail",e);
}
mFilters=new IntentFilter[]{ndef,};
// Setup a tech list for all NfcF tags
mTechLists = new String[][] { new String[] { MifareClassic.class
.getName() } };
Intent intent=getIntent();
String action=intent.getAction();
if(NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)){
String msg="Discovered Tag with Intent " + intent;
status_Data.setText(msg);
Tag tagFromintent=intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareClassic mfc=MifareClassic.get(tagFromintent);
byte[] data;
try{
mfc.connect();
boolean auth = false;
String cardData = null;
status_Data.setText("Authenticating the Tag..");
auth = mfc.authenticateSectorWithKeyA(1,
MifareClassic.KEY_DEFAULT);
if (auth){
status_Data.setText("Authenticated");
String text = "Hello, World!";
String lang = "en";
byte[] textBytes = text.getBytes();
byte[] langBytes = lang.getBytes("US-ASCII");
int langLength = langBytes.length;
int textLength = textBytes.length;
byte[] payload = new byte[1 + langLength + textLength];
// set status byte (see NDEF spec for actual bits)
payload[0] = (byte) langLength;
// copy langbytes and textbytes into payload
System.arraycopy(langBytes, 0, payload, 1, langLength);
System.arraycopy(textBytes, 0, payload, 1 + langLength, textLength);
if (!mfc.isConnected()) mfc.connect();
mfc.writeBlock(1, payload);
mfc.close();
showMessage("written");
}else{
showMessage("Authetication Failed");
status_Data.setText("");
}
}
catch(IOException e){
status_Data.setText(e.toString());
}
}else{
showMessage("Nothing to read");
}
}
};
어떤 포인터
주셔서 감사합니다, 내 이해가 잘못되면 pls, 그래서 NDEF 쓰기 및 읽기 기능을 MIFare 클래식 1k 카드에 대한 IO 작업을 할 사용해야합니까? – sansknwoledge
기본 키를 사용하여 섹터를 인증 할 수 있습니다. 이제 디버거에서 null 포인터 예외가 발생하여 ndef.get (태그)가 null을 반환한다는 것을 알았습니다. 너 나를 인도 할 수 있니? – sansknwoledge