I am trying to create an application using NFC, and I just want to try and read the NFC tag and get the text message from the tag and put it in the TextView. I already have a code for it, but nothing happens when I try to connect the phone with an NFC tag.
Here is my code, and someone can look at it and see what I am doing wrong and what needs to be done to fix the problem:
Button measurementsDataButton; NfcAdapter myNfcAdapter; PendingIntent myPendingIntent; IntentFilter ndef; IntentFilter[] filters; String[][] techLists; int mCount; TextView mText; String payload; byte payloadHeader; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_nfc_scanner); final ActionBar actionBar = getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); mText = (TextView) findViewById(R.id.flowTextView1); measurementsDataButton = (Button) findViewById(R.id.measurementsButton1); measurementsDataButton.setOnClickListener(this); myNfcAdapter = NfcAdapter.getDefaultAdapter(this); myPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); filters = new IntentFilter[] {ndef, }; techLists = new String[][] {new String[] {Ndef.class.getName()}, new String[] {NdefFormatable.class.getName()}}; } @Override public void onPause() { super.onPause(); myNfcAdapter.disableForegroundDispatch(this); } @Override public void onResume() { super.onResume(); if(myNfcAdapter != null) { myNfcAdapter.enableForegroundDispatch(this, myPendingIntent, filters, techLists); } } @Override public void onNewIntent(Intent intent) { if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent())) { NdefMessage [] messages = getNdefMessages(getIntent()); for(int i = 0; i<messages.length; i++) { for(int j = 0; j<messages[0].getRecords().length; j++) { NdefRecord record = messages[i].getRecords()[j]; payload = new String(record.getPayload(), 1, record.getPayload().length-1, Charset.forName("UTF-8")); mText.setText(payload); payloadHeader = record.getPayload()[0]; } } } } NdefMessage[] getNdefMessages(Intent intent) {
source share