2012-09-18 213 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