Метод NdefRecord.createTextRecord()
был введен в уровне API 21. Следовательно, он не доступен на платформах ниже этого уровня API. Однако вы можете легко собрать текстовую запись самостоятельно. Полезная нагрузка текстового записи состоит из байта состояния, поле кода языка, и текстовое поле:
+-------------+---------------+--------------------------+
| Status byte | Language code | Text |
| (1 byte) | (n byte) | (m byte) |
+-------------+---------------+--------------------------+
- байт состояния указывает кодировку текстового поля (
0
= UTF-8, 1
= UTF-16) в бит 7 и длину n
кода языка в битах 5..0. Бит 6 всегда должен быть равен нулю.
- Код языка содержит код языка IANA, закодированный в US-ASCII (например, «en»).
Вы можете создать текстовую запись с помощью этого метода:
public static NdefRecord createTextRecord(String language, String text) {
byte[] languageBytes;
byte[] textBytes;
try {
languageBytes = language.getBytes("US-ASCII");
textBytes = text.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError(e);
}
byte[] recordPayload = new byte[1 + (languageBytes.length & 0x03F) + textBytes.length];
recordPayload[0] = (byte)(languageBytes.length & 0x03F);
System.arraycopy(languageBytes, 0, recordPayload, 1, languageBytes.length & 0x03F);
System.arraycopy(textBytes, 0, recordPayload, 1 + (languageBytes.length & 0x03F), textBytes.length);
return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, null, recordPayload);
}
NdefRecord r = createTextRecord("en", content);
спасибо за помощь, теперь он отлично работает –