C# 如何在windows phone 8中从Nfc标记读取多个NdefTextRecord

C# 如何在windows phone 8中从Nfc标记读取多个NdefTextRecord,c#,windows-phone-8,nfc,C#,Windows Phone 8,Nfc,我正在开发有关nfc标记的windows phone应用程序,在该应用程序中,我可以写入NdefTextRecord类型的所有四条记录。发布该记录时没有问题。主要问题是在读取NDEF消息时,我无法读取我发布的任何记录。我想读取所有四条记录,但在读取时却什么也看不到。 下面是两条发布消息的代码 public void ApplicationBarIconButton_Click(object sender, System.EventArgs e) { va

我正在开发有关nfc标记的windows phone应用程序,在该应用程序中,我可以写入NdefTextRecord类型的所有四条记录。发布该记录时没有问题。主要问题是在读取NDEF消息时,我无法读取我发布的任何记录。我想读取所有四条记录,但在读取时却什么也看不到。 下面是两条发布消息的代码

        public void ApplicationBarIconButton_Click(object sender, System.EventArgs e)
    {

        var fRecord = new NdefTextRecord{Text = TxtFloor.Text , LanguageCode = "en-US" };
        var zRecord = new NdefTextRecord { Text = TxtZone.Text, LanguageCode = "en-US" };
        var latRecord = new NdefTextRecord { Text = LatitudeTextBlock.Text, LanguageCode = "en-US" };
        var longRecord = new NdefTextRecord { Text = LongitudeTextBlock.Text, LanguageCode = "en-US" };

        var msg = new NdefMessage {};
        msg.Add(fRecord);
        msg.Add(zRecord);
        msg.Add(latRecord);
        msg.Add(longRecord);

        _device.PublishBinaryMessage(
            "NDEF:WriteTag",
            msg.ToByteArray().AsBuffer(),
            MessageWrittenHandler);

        SetStatusOutput("Message written");
        }
下面是订阅的代码

private void InitializeProximityDevice()
    {
        _device = Windows.Networking.Proximity.ProximityDevice.GetDefault();
        if (_device != null)
        {
            _subscriptionIdNdef = _device.SubscribeForMessage("NDEF", MessageReceivedHandler);

        }

    }

        private void MessageReceivedHandler(ProximityDevice sender, ProximityMessage message)
    {

        var rawMsg = message.Data.ToArray();
        var ndefMessage = NdefMessage.FromByteArray(rawMsg);


        // Loop over all records contained in the NDEF message
        foreach (NdefRecord record in ndefMessage)
        {

            if (NdefTextRecord.IsRecordType(record))
            {
                // Convert and extract URI info
                var textRecord = new NdefTextRecord(record);
                var str = textRecord;


                //SetLogStatus();


            }

您的读取代码是否正在输入foreach语句,但类型检查失败?试一试

foreach (NdefRecord record in ndefMessage) {
    var recordType = record.CheckSpecializedType(false);

    if (recordType == typeof(NdefTextRecord)) {
    // ...
    }
}

Windows Phone仅读取消息的第一条记录并对其进行操作。将忽略存储在标记上的所有其他记录。如果操作系统不理解消息中的第一条记录,则忽略标记

见: