У меня есть метод, который записывает данные в обнаруженный тег NFC (данные поступают из массива записей toWriteRecordsList
).Ошибка NdefRecord.createMime в аргументах
// ... more up here ...
for (String record : toWriteRecordsList) {
String[] recordArr = record.split(":");
// I verified the recordArr contained the correct data
try {
// This line writes 'text/plain' as the message/payload
//records[currentRecord] = NdefRecord.createMime("text/plain", recordArr[1].getBytes("US-ASCII"));
// This line works as intended...¯\_(ツ)_/¯
records[currentRecord] = NdefRecord.createMime(recordArr[1], "text/plain".getBytes());
} catch (Exception e) {
e.printStackTrace();
}
currentRecord++;
}
// ... actual writing down here ...
Причудливо, когда я использую метод NdefRecord.createMime
как docs указать то закодированное сообщение, когда отображается в приложении Tag Android по умолчанию («Тег коллектора»), является то, что первый аргумент (в данном случае сообщение телефон печатает это «текст/обычный»)
Когда createMime()
определенно есть эта подпись:
public static NdefRecord createMime (String mimeType, byte[] mimeData)
Потому что это казалось настолько биз arre для меня, я поменял аргументы (включая вызов .getBytes()
, чтобы удовлетворить прототип), и это сработало! Я пробовал это на двух разных устройствах (Galaxy Nexus и Galaxy S4) и получил такое же поведение.
Я не могу найти запись об ошибке Android, поэтому я решил, что делаю что-то неправильно. Что, черт возьми, происходит?
Метод работал по назначению на всех проверенных мной устройствах. Как вы читаете данные из тега? –
@MichaelRoland: «Tag detectedTag = intent.getParcelableExtra (NfcAdapter.EXTRA_TAG);' – henrycjc
Это не читает никаких тегов * данных *. –