public PlatformNfcTag ReadPlatformNfcTag() { var nfcTag = this.GetNfcTag(); this.CheckForNfcTag(nfcTag); using (var ndef = NdefTechnology.Get(nfcTag)) { ndef.Connect(); var message = ndef.GetNdefMessage(); if (message != null && message.Length > 0) { var ndefRecord = message.Records[0]; var nfcTagRecord = NfcTagRecord.ToNfcTagRecord(ndefRecord) as NfcTagRecord; var platformNfcTag = new PlatformNfcTag() { Uid = ndef.TagUIDString(), ReadOnly = !ndef.IsWritable, Record = nfcTagRecord }; return platformNfcTag; } } return null; }
public PlatformNfcTag EncodeNfcTag(Device device, bool makeReadOnly = true) { var nfcTag = this.GetNfcTag(); this.CheckForNfcTag(nfcTag); var platformNfcTag = new PlatformNfcTag(); using (var ndef = NdefTechnology.Get(nfcTag)) { ndef.Connect(); if (!ndef.IsWritable) throw new ApplicationException("The nfc tag is not writable."); platformNfcTag.Uid = ndef.TagUIDString(); var nfcTagRecord = new NfcTagRecord(device); ndef.WriteNdefMessage(nfcTagRecord); platformNfcTag.Record = nfcTagRecord; if (makeReadOnly && ndef.CanMakeReadOnly) { ndef.MakeReadOnly(); platformNfcTag.ReadOnly = true; } else { platformNfcTag.ReadOnly = false; } } return platformNfcTag; }