diff --git a/api/current.xml b/api/current.xml
index 5f0680d082cfc..59126aff725f2 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -101975,6 +101975,8 @@
>
+
+
GetObjectClass(o);
+
+ raw_record_size = e->GetArrayLength(array);
+ raw_record = e->GetByteArrayElements(array, NULL);
+ if (raw_record == NULL) {
+ goto clean_and_return;
+ }
+
+ LOGD("phFriNfc_NdefRecord_Parse()");
+ status = phFriNfc_NdefRecord_Parse(&record, (uint8_t *)raw_record);
+ if (status) {
+ LOGE("phFriNfc_NdefRecord_Parse() returned 0x%04x", status);
+ goto clean_and_return;
+ }
+ LOGD("phFriNfc_NdefRecord_Parse() returned 0x%04x", status);
+
+ /* Set TNF field */
+ mTnf = e->GetFieldID(record_cls, "mTnf", "S");
+ e->SetShortField(o, mTnf, record.Tnf);
+
+ /* Set type field */
+ mType = e->GetFieldID(record_cls, "mType", "[B");
+ type = e->NewByteArray(record.TypeLength);
+ if (type == NULL) {
+ goto clean_and_return;
+ }
+ e->SetByteArrayRegion(type, 0, record.TypeLength,
+ (jbyte *)record.Type);
+ e->SetObjectField(o, mType, type);
+
+ /* Set id field */
+ mId = e->GetFieldID(record_cls, "mId", "[B");
+ id = e->NewByteArray(record.IdLength);
+ if (id == NULL) {
+ goto clean_and_return;
+ }
+ e->SetByteArrayRegion(id, 0, record.IdLength,
+ (jbyte *)record.Id);
+ e->SetObjectField(o, mId, id);
+
+ /* Set payload field */
+ mPayload = e->GetFieldID(record_cls, "mPayload", "[B");
+ payload = e->NewByteArray(record.PayloadLength);
+ if (payload == NULL) {
+ goto clean_and_return;
+ }
+ e->SetByteArrayRegion(payload, 0, record.PayloadLength,
+ (jbyte *)record.PayloadData);
+ e->SetObjectField(o, mPayload, payload);
+
+ ret = 0;
+
+clean_and_return:
+ if (type != NULL) {
+ e->DeleteLocalRef(type);
+ }
+ if (id != NULL) {
+ e->DeleteLocalRef(id);
+ }
+ if (payload != NULL) {
+ e->DeleteLocalRef(payload);
+ }
+ if (raw_record != NULL) {
+ e->ReleaseByteArrayElements(array, raw_record, JNI_ABORT);
+ }
+
+ return ret;
+}
+
static JNINativeMethod gMethods[] = {
{"generate", "(SS[B[B[B)[B", (void *)android_nfc_NdefRecord_generate},
+ {"parseNdefRecord", "([B)I", (void *)android_nfc_NdefRecord_parseNdefRecord},
};
int register_android_nfc_NdefRecord(JNIEnv *e)