3

私は多くの方法を試しましたが、何もうまくいきませんでした。以下のコードは ndefmessage を示していますが、読み取り可能な形式ではありません。一部の ndef メッセージ形式を b@15d... として表示します。

public void onNewIntent(Intent intent) {
  Tag myTag = (Tag)intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
  def ndefTag = Ndef.get(myTag);
  int size = ndefTag.getMaxSize();         // tag size
  String type = ndefTag.getType();         // tag type
  NdefMessage ndefMesg = ndefTag.getCachedNdefMessage();
  NdefRecord[] ndefRecords = ndefMesg.getRecords();
  int len = ndefRecords.length;
  for (int i = 0; i < len; i++) {
    typ = ndefRecords[i].getType();
    payload = ndefRecords[i].getPayload();
  }
  String textEncoding = ((payload[0] & 0200) == 0) ? "UTF-8" : "UTF-16";
  int languageCodeLength = payload[0] & 0077;
  try {
    @SuppressWarnings("unused")
    String languageCode = new String(payload, 1,languageCodeLength,"US-ASCII");
  } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  try {
    text =new String(payload,languageCodeLength+1,payload.length
      -languageCodeLength - 1, textEncoding);
    Toast.makeText(getApplicationContext(),
      text+"First Try",Toast.LENGTH_LONG).show();
    mText.setText("Discovered tag "+text);
  } catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    String val = new String(typ);
    val+=new String(payload);
    Toast.makeText(getApplicationContext(),
      "Second"+val,Toast.LENGTH_LONG).show();
  }
  Log.i("Foreground dispatch", "Discovered tag with intent: " + intent);
  mText.setText("Discovered tag "+text);
}
4

1 に答える 1