Я пытаюсь читать и писать в тег MifareClassic.до сих пор я смог настроить свое приложение для получения намерений на переднем плане.чтобы прочитать тег, я сначала получаю экземпляр MifareClassic, аутентифицируюсь и читаю блок.все работает нормально.
но когда я пишу в тег, ничего не происходит.кажется, что код выполняется без проблем, но данные в теге не меняются.Самое смешное, что Я пытался записать в тег без аутентификации сначала .код выполняется снова без каких-либо исключений.но когда я попытался прочитать блок без предварительной аутентификации, я получил исключение (сбой передачи).
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nfcAdapter = NfcAdapter.getDefaultAdapter(this);
pendingIntent = PendingIntent.getActivity(
this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED);
filters = new IntentFilter[] {ndef, };
techListsArray = new String[][] { new String[] { MifareClassic.class.getName()} };
if(nfcAdapter!=null && nfcAdapter.isEnabled() ){}
else{
Toast.makeText(this, "nfc not available", Toast.LENGTH_LONG).show();
//finish();
}
}
@Override
protected void onResume() {
super.onResume();
nfcAdapter.enableForegroundDispatch(this, pendingIntent, filters, techListsArray);
}
@Override
protected void onPause() {
super.onPause();
nfcAdapter.disableForegroundDispatch(this);
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareClassic mfc = MifareClassic.get(tagFromIntent);
mfc.connect();
byte [] data2=new byte[16];
for(int i =0;i<16;i++)
data2[i]=0;
//auth = mfc.authenticateSectorWithKeyA(4, key[1]);
int blo=mfc.sectorToBlock(4);
mfc.writeBlock(blo,data2);
mfc.close();}