2012-09-18 149 views
0

您好我正在读取来自NFC标签的数据,并尝试将其与一个字符串进行比较,但if循环比较字符串时失败。我读取NFC数据并将其与字符串进行比较的代码是如。谢谢。比较从NFC标签读取数据

Parcelable[] messages = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
       //NdefMessage message = ndef.getNdefMessage(); 
       if (messages != null) { 
        NdefMessage[] ndefMessages = new NdefMessage[messages.length]; 
        for (int i = 0; i < messages.length; i++) { 
         ndefMessages[i] = (NdefMessage) messages[i]; 
        } 
       NdefRecord record = ndefMessages[0].getRecords()[0]; 

       byte[] payload = record.getPayload(); 
       String text = new String(payload); 
       txtRead.setText(text); 


           if(text.equalsIgnoreCase("silent")){ 
        Toast.makeText(getApplicationContext(), text, Toast.LENGTH_LONG).show(); 
        AudioManager audiomanage = (AudioManager)getSystemService(Context.AUDIO_SERVICE); 
        audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT); 
       } 
+0

http://code.google.com/p/ndef-tools-for-android/ – ThomasRS

回答

0

的NDEF文字记录包含的实际文本之前,对文本的语言,更重要的是,文本编码信息(字符集使用)。您应检查这些字节,以确定实际文本是以UTF-8还是UTF-16编码(并使用该字节将字节转换为字符串)。

+0

谢谢你的答案。我从有效载荷中删除了文本语言和文本编码。现在我得到了我想要的字符串... – ssg

1

如果问题只与如果条件试试这个代码

if(text.toLowerCase().contains("silent")){ 
... 
... 
} 
+0

谢谢你..它工作 – ssg