0

嗨,我正在从 NFC 标签读取数据并尝试将其与字符串进行比较,但在比较字符串时 if 循环失败。我用于读取 NFC 数据并将其与字符串进行比较的代码为 as。谢谢你。

   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); 
                }
4

2 回答 2

1

如果问题仅与 if 条件有关,请尝试此代码

if(text.toLowerCase().contains("silent")){
...
...
}
于 2012-09-18T05:27:46.397 回答
0

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

于 2012-09-18T05:55:02.357 回答