private void readTag(Tag t) { // get NDEF tag details Ndef ndefTag = Ndef.get(t); // get NDEF message details NdefMessage ndefMesg = ndefTag.getCachedNdefMessage(); if (ndefMesg == null) { return; } NdefRecord[] ndefRecords = ndefMesg.getRecords(); if (ndefRecords == null) { return; } for (NdefRecord record : ndefRecords) { short tnf = record.getTnf(); String type = new String(record.getType()); if (tnf == NdefRecord.TNF_WELL_KNOWN && Arrays.equals(type.getBytes(), NdefRecord.RTD_URI)) { String url = new String(record.getPayload()); if (url.startsWith(ATTENDEE_URL_PREFIX)) { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse("https://" + url.substring(1))); startActivity(i); return; } } } }
@Override protected String doInBackground(Tag... params) { Tag tag = params[0]; Ndef ndef = Ndef.get(tag); if (ndef == null) { // NDEF is not supported by this Tag. return null; } NdefMessage ndefMessage = ndef.getCachedNdefMessage(); NdefRecord[] records = ndefMessage.getRecords(); for (NdefRecord ndefRecord : records) { if (ndefRecord.getTnf() == NdefRecord.TNF_WELL_KNOWN && Arrays.equals(ndefRecord.getType(), NdefRecord.RTD_TEXT)) { try { return readText(ndefRecord); } catch (UnsupportedEncodingException e) { Log.e(TAG, "Unsupported Encoding", e); } } } return null; }
private void connectToNDEF(Tag tag) { Ndef ndef = Ndef.get(tag); try { receiveTab.append("\n" + ndef.getType()); NdefMessage message = ndef.getCachedNdefMessage(); if (message != null) { NdefRecord[] recordsFromMessage = message.getRecords(); for (int i = 0; i < recordsFromMessage.length; i++) { printMessage(recordsFromMessage[i]); } } else { receiveTab.append("\nNull message"); } receiveTab.append("\nNDEF did work!"); } catch (Exception ex) { receiveTab.append("\nNDEF did not work"); } }
@Override protected void onNewIntent(Intent intent) { // if extra is present, it has priority on the saved poll Poll serializedPoll = (Poll) intent.getSerializableExtra("poll"); if (serializedPoll != null) { poll = serializedPoll; } if (intent.getParcelableExtra(NfcAdapter.EXTRA_TAG) != null) { Intent broadcastIntent = new Intent(BroadcastIntentTypes.nfcTagTapped); broadcastIntent.putExtra( NfcAdapter.EXTRA_TAG, intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)); LocalBroadcastManager.getInstance(this).sendBroadcast(broadcastIntent); } Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); Ndef ndef = Ndef.get(tag); if (ndef == null) { Toast.makeText( this, getResources().getText(R.string.toast_nfc_tag_read_failed), Toast.LENGTH_LONG) .show(); } else { NdefMessage msg; msg = ndef.getCachedNdefMessage(); config = new String(msg.getRecords()[0].getPayload()).split("\\|\\|"); // saving the values that we got SharedPreferences.Editor editor = preferences.edit(); editor.putString("SSID", ssid); editor.commit(); if (checkIdentification()) { connect(config, this); } } super.onNewIntent(intent); }