DO NOT MERGE

Merge pie-platform-release (PPRL.181105.017, history only) into master

Bug: 118454372
Change-Id: I48e0222bc17f9ca5943ab1919f0748ab1888832f
diff --git a/nci/Android.mk b/nci/Android.mk
deleted file mode 100644
index 34f4385..0000000
--- a/nci/Android.mk
+++ /dev/null
@@ -1,3 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/nci/jni/Android.bp b/nci/jni/Android.bp
new file mode 100644
index 0000000..a143d3a
--- /dev/null
+++ b/nci/jni/Android.bp
@@ -0,0 +1,48 @@
+cc_library_shared {
+    name: "libnfc_nci_jni",
+
+    cflags: [
+        "-Wall",
+        "-Wextra",
+        "-Wno-unused-parameter",
+        "-Werror",
+
+        "-DNXP_UICC_ENABLE",
+    ],
+
+    srcs: ["**/*.cpp"],
+
+    include_dirs: [
+        "system/nfc/src/nfa/include",
+        "system/nfc/src/nfc/include",
+        "system/nfc/src/include",
+        "system/nfc/src/gki/ulinux",
+        "system/nfc/src/gki/common",
+        "system/nfc/utils/include",
+    ],
+
+    local_include_dirs: [
+        "extns/pn54x/inc",
+        "extns/pn54x/src/common",
+        "extns/pn54x/src/mifare",
+    ],
+
+    shared_libs: [
+        "libicuuc",
+        "libnativehelper",
+        "libcutils",
+        "libutils",
+        "liblog",
+        "libnfc-nci",
+        "libchrome",
+        "libbase",
+    ],
+
+    static_libs: ["libxml2"],
+
+    product_variables: {
+        debuggable: {
+            cflags: ["-DDCHECK_ALWAYS_ON"],
+        },
+    },
+}
diff --git a/nci/jni/Android.mk b/nci/jni/Android.mk
deleted file mode 100644
index bfd3d43..0000000
--- a/nci/jni/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-VOB_COMPONENTS := system/nfc/src
-NFA := $(VOB_COMPONENTS)/nfa
-NFC := $(VOB_COMPONENTS)/nfc
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-include $(call all-makefiles-under,$(LOCAL_PATH))
-
-ifneq ($(NCI_VERSION),)
-LOCAL_CFLAGS += -DNCI_VERSION=$(NCI_VERSION) -O0 -g
-endif
-
-LOCAL_CFLAGS += -Wall -Wextra -Wno-unused-parameter -Werror
-
-ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
-LOCAL_CFLAGS += -DDCHECK_ALWAYS_ON
-endif
-
-LOCAL_SRC_FILES := $(call all-subdir-cpp-files) $(call all-subdir-c-files)
-
-LOCAL_C_INCLUDES += \
-    external/libxml2/include \
-    frameworks/native/include \
-    $(NFA)/include \
-    $(NFA)/brcm \
-    $(NFC)/include \
-    $(NFC)/brcm \
-    $(NFC)/int \
-    $(VOB_COMPONENTS)/hal/include \
-    $(VOB_COMPONENTS)/hal/int \
-    $(VOB_COMPONENTS)/include \
-    $(VOB_COMPONENTS)/gki/ulinux \
-    $(VOB_COMPONENTS)/gki/common \
-    system/nfc/utils/include
-
-LOCAL_SHARED_LIBRARIES := \
-    libicuuc \
-    libnativehelper \
-    libcutils \
-    libutils \
-    liblog \
-    libnfc-nci \
-    libchrome \
-    libbase \
-
-LOCAL_STATIC_LIBRARIES := libxml2
-
-LOCAL_MODULE := libnfc_nci_jni
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp
index 6f3c569..18c10e6 100755
--- a/nci/jni/NativeNfcManager.cpp
+++ b/nci/jni/NativeNfcManager.cpp
@@ -153,7 +153,6 @@
                                         tNFA_DM_CBACK_DATA* eventData);
 static bool isPeerToPeer(tNFA_ACTIVATED& activated);
 static bool isListenMode(tNFA_ACTIVATED& activated);
-static void enableDisableLptd(bool enable);
 static tNFA_STATUS stopPolling_rfDiscoveryDisabled();
 static tNFA_STATUS startPolling_rfDiscoveryDisabled(
     tNFA_TECHNOLOGY_MASK tech_mask);
@@ -1175,7 +1174,6 @@
   // Check polling configuration
   if (tech_mask != 0) {
     stopPolling_rfDiscoveryDisabled();
-    enableDisableLptd(enable_lptd);
     startPolling_rfDiscoveryDisabled(tech_mask);
 
     // Start P2P listening if tag polling was enabled
@@ -1263,52 +1261,6 @@
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", __func__);
 }
 
-void enableDisableLptd(bool enable) {
-  // This method is *NOT* thread-safe. Right now
-  // it is only called from the same thread so it's
-  // not an issue.
-  static bool sCheckedLptd = false;
-  static bool sHasLptd = false;
-
-  tNFA_STATUS stat = NFA_STATUS_OK;
-  if (!sCheckedLptd) {
-    sCheckedLptd = true;
-    SyncEventGuard guard(sNfaGetConfigEvent);
-    tNFA_PMID configParam[1] = {NCI_PARAM_ID_TAGSNIFF_CFG};
-    stat = NFA_GetConfig(1, configParam);
-    if (stat != NFA_STATUS_OK) {
-      LOG(ERROR) << StringPrintf("%s: NFA_GetConfig failed", __func__);
-      return;
-    }
-    sNfaGetConfigEvent.wait();
-    if (sCurrentConfigLen < 4 || sConfig[1] != NCI_PARAM_ID_TAGSNIFF_CFG) {
-      LOG(ERROR) << StringPrintf(
-          "%s: Config TLV length %d returned is too short", __func__,
-          sCurrentConfigLen);
-      return;
-    }
-    if (sConfig[3] == 0) {
-      LOG(ERROR) << StringPrintf(
-          "%s: LPTD is disabled, not enabling in current config", __func__);
-      return;
-    }
-    sHasLptd = true;
-  }
-  // Bail if we checked and didn't find any LPTD config before
-  if (!sHasLptd) return;
-  uint8_t enable_byte = enable ? 0x01 : 0x00;
-
-  SyncEventGuard guard(sNfaSetConfigEvent);
-
-  stat = NFA_SetConfig(NCI_PARAM_ID_TAGSNIFF_CFG, 1, &enable_byte);
-  if (stat == NFA_STATUS_OK)
-    sNfaSetConfigEvent.wait();
-  else
-    LOG(ERROR) << StringPrintf("%s: Could not configure LPTD feature",
-                               __func__);
-  return;
-}
-
 /*******************************************************************************
 **
 ** Function:        nfcManager_doCreateLlcpServiceSocket
@@ -1584,20 +1536,22 @@
 **
 *******************************************************************************/
 static bool isListenMode(tNFA_ACTIVATED& activated) {
-  return ((NFC_DISCOVERY_TYPE_LISTEN_A ==
-           activated.activate_ntf.rf_tech_param.mode) ||
-          (NFC_DISCOVERY_TYPE_LISTEN_B ==
-           activated.activate_ntf.rf_tech_param.mode) ||
-          (NFC_DISCOVERY_TYPE_LISTEN_F ==
-           activated.activate_ntf.rf_tech_param.mode) ||
-          (NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE ==
-           activated.activate_ntf.rf_tech_param.mode) ||
-          (NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE ==
-           activated.activate_ntf.rf_tech_param.mode) ||
-          (NFC_DISCOVERY_TYPE_LISTEN_ISO15693 ==
-           activated.activate_ntf.rf_tech_param.mode) ||
-          (NFC_DISCOVERY_TYPE_LISTEN_B_PRIME ==
-           activated.activate_ntf.rf_tech_param.mode));
+  return (
+      (NFC_DISCOVERY_TYPE_LISTEN_A ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_DISCOVERY_TYPE_LISTEN_B ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_DISCOVERY_TYPE_LISTEN_F ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_DISCOVERY_TYPE_LISTEN_A_ACTIVE ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_DISCOVERY_TYPE_LISTEN_F_ACTIVE ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_DISCOVERY_TYPE_LISTEN_ISO15693 ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_DISCOVERY_TYPE_LISTEN_B_PRIME ==
+       activated.activate_ntf.rf_tech_param.mode) ||
+      (NFC_INTERFACE_EE_DIRECT_RF == activated.activate_ntf.intf_param.type));
 }
 
 /*******************************************************************************
@@ -1655,12 +1609,12 @@
 static jboolean nfcManager_doDownload(JNIEnv*, jobject) {
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", __func__);
   NfcAdaptation& theInstance = NfcAdaptation::GetInstance();
-
+  bool result = JNI_FALSE;
   theInstance.Initialize();  // start GKI, NCI task, NFC task
-  theInstance.DownloadFirmware();
+  result = theInstance.DownloadFirmware();
   theInstance.Finalize();
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: exit", __func__);
-  return JNI_TRUE;
+  return result;
 }
 
 /*******************************************************************************
@@ -1755,6 +1709,12 @@
       << StringPrintf("%s: state = %d prevScreenState= %d, discovry_param = %d",
                       __FUNCTION__, state, prevScreenState, discovry_param);
 
+  if (prevScreenState == state) {
+    DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
+        "New screen state is same as previous state. No action taken");
+    return;
+  }
+
   if (sIsDisabling || !sIsNfaEnabled ||
       (NFC_GetNCIVersion() != NCI_VERSION_2_0))
     return;
@@ -1816,7 +1776,8 @@
   }
   if ((state == NFA_SCREEN_STATE_OFF_LOCKED ||
        state == NFA_SCREEN_STATE_OFF_UNLOCKED) &&
-      prevScreenState == NFA_SCREEN_STATE_ON_UNLOCKED) {
+      prevScreenState == NFA_SCREEN_STATE_ON_UNLOCKED && (!sP2pActive) &&
+      (!sSeRfActive)) {
     // screen turns off, disconnect tag if connected
     nativeNfcTag_doDisconnect(NULL, NULL);
   }
@@ -2062,20 +2023,6 @@
 **
 *******************************************************************************/
 void doStartupConfig() {
-  struct nfc_jni_native_data* nat = getNative(0, 0);
-  tNFA_STATUS stat = NFA_STATUS_FAILED;
-
-  // If polling for Active mode, set the ordering so that we choose Active over
-  // Passive mode first.
-  if (nat && (nat->tech_mask &
-              (NFA_TECHNOLOGY_MASK_A_ACTIVE | NFA_TECHNOLOGY_MASK_F_ACTIVE))) {
-    uint8_t act_mode_order_param[] = {0x01};
-    SyncEventGuard guard(sNfaSetConfigEvent);
-    stat = NFA_SetConfig(NCI_PARAM_ID_ACT_ORDER, sizeof(act_mode_order_param),
-                         &act_mode_order_param[0]);
-    if (stat == NFA_STATUS_OK) sNfaSetConfigEvent.wait();
-  }
-
   // configure RF polling frequency for each technology
   static tNFA_DM_DISC_FREQ_CFG nfa_dm_disc_freq_cfg;
   // values in the polling_frequency[] map to members of nfa_dm_disc_freq_cfg
diff --git a/nci/jni/RoutingManager.cpp b/nci/jni/RoutingManager.cpp
index ba2e3ab..d749aa1 100755
--- a/nci/jni/RoutingManager.cpp
+++ b/nci/jni/RoutingManager.cpp
@@ -51,7 +51,7 @@
 static const uint8_t SYS_CODE_PWR_STATE_HOST = 0x01;
 static const uint16_t DEFAULT_SYS_CODE = 0xFEFE;
 
-RoutingManager::RoutingManager() {
+RoutingManager::RoutingManager() : mAidRoutingConfigured(false) {
   static const char fn[] = "RoutingManager::RoutingManager()";
 
   mDefaultOffHostRoute =
@@ -366,9 +366,14 @@
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", fn);
   uint8_t powerState =
       (route == mDefaultOffHostRoute) ? mOffHostAidRoutingPowerState : 0x01;
+  SyncEventGuard guard(mRoutingEvent);
+  mAidRoutingConfigured = false;
   tNFA_STATUS nfaStat =
       NFA_EeAddAidRouting(route, aidLen, (uint8_t*)aid, powerState, aidInfo);
   if (nfaStat == NFA_STATUS_OK) {
+    mRoutingEvent.wait();
+  }
+  if (mAidRoutingConfigured) {
     DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: routed AID", fn);
     return true;
   } else {
@@ -380,8 +385,13 @@
 bool RoutingManager::removeAidRouting(const uint8_t* aid, uint8_t aidLen) {
   static const char fn[] = "RoutingManager::removeAidRouting";
   DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: enter", fn);
+  SyncEventGuard guard(mRoutingEvent);
+  mAidRoutingConfigured = false;
   tNFA_STATUS nfaStat = NFA_EeRemoveAidRouting(aidLen, (uint8_t*)aid);
   if (nfaStat == NFA_STATUS_OK) {
+    mRoutingEvent.wait();
+  }
+  if (mAidRoutingConfigured) {
     DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf("%s: removed AID", fn);
     return true;
   } else {
@@ -406,7 +416,7 @@
 
 void RoutingManager::onNfccShutdown() {
   static const char fn[] = "RoutingManager:onNfccShutdown";
-  if (mDefaultOffHostRoute == 0x00) return;
+  if ((mDefaultOffHostRoute == 0x00) && (mDefaultFelicaRoute == 0x00)) return;
 
   tNFA_STATUS nfaStat = NFA_STATUS_FAILED;
   uint8_t actualNumEe = MAX_NUM_EE;
@@ -419,9 +429,13 @@
   }
   if (actualNumEe != 0) {
     for (uint8_t xx = 0; xx < actualNumEe; xx++) {
-      if ((eeInfo[xx].num_interface != 0) &&
-          (eeInfo[xx].ee_interface[0] != NCI_NFCEE_INTERFACE_HCI_ACCESS) &&
-          (eeInfo[xx].ee_status == NFA_EE_STATUS_ACTIVE)) {
+      bool bIsOffHostEEPresent =
+          (NFC_GetNCIVersion() < NCI_VERSION_2_0)
+              ? (eeInfo[xx].num_interface != 0)
+              : (eeInfo[xx].ee_interface[0] !=
+                 NCI_NFCEE_INTERFACE_HCI_ACCESS) &&
+                    (eeInfo[xx].ee_status == NFA_EE_STATUS_ACTIVE);
+      if (bIsOffHostEEPresent) {
         DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
             "%s: Handle: 0x%04x Change Status Active to Inactive", fn,
             eeInfo[xx].ee_handle);
@@ -667,6 +681,10 @@
     case NFA_EE_ADD_AID_EVT: {
       DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
           "%s: NFA_EE_ADD_AID_EVT  status=%u", fn, eventData->status);
+      SyncEventGuard guard(routingManager.mRoutingEvent);
+      routingManager.mAidRoutingConfigured =
+          (eventData->status == NFA_STATUS_OK);
+      routingManager.mRoutingEvent.notifyOne();
     } break;
 
     case NFA_EE_ADD_SYSCODE_EVT: {
@@ -686,6 +704,10 @@
     case NFA_EE_REMOVE_AID_EVT: {
       DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
           "%s: NFA_EE_REMOVE_AID_EVT  status=%u", fn, eventData->status);
+      SyncEventGuard guard(routingManager.mRoutingEvent);
+      routingManager.mAidRoutingConfigured =
+          (eventData->status == NFA_STATUS_OK);
+      routingManager.mRoutingEvent.notifyOne();
     } break;
 
     case NFA_EE_NEW_EE_EVT: {
diff --git a/nci/jni/RoutingManager.h b/nci/jni/RoutingManager.h
index 2d3f315..211fdf1 100755
--- a/nci/jni/RoutingManager.h
+++ b/nci/jni/RoutingManager.h
@@ -91,6 +91,7 @@
   uint8_t mDefaultSysCodePowerstate;
   uint8_t mOffHostAidRoutingPowerState;
   bool mReceivedEeInfo;
+  bool mAidRoutingConfigured;
   tNFA_EE_CBACK_DATA mCbEventData;
   tNFA_EE_DISCOVER_REQ mEeInfo;
   tNFA_TECHNOLOGY_MASK mSeTechMask;
diff --git a/nci/jni/extns/Android.mk b/nci/jni/extns/Android.mk
deleted file mode 100755
index 2363da0..0000000
--- a/nci/jni/extns/Android.mk
+++ /dev/null
@@ -1,2 +0,0 @@
-EXTNS_PATH := $(call my-dir)
-include $(call all-makefiles-under,$(EXTNS_PATH))
diff --git a/nci/jni/extns/pn54x/Android.mk b/nci/jni/extns/pn54x/Android.mk
deleted file mode 100755
index b53712f..0000000
--- a/nci/jni/extns/pn54x/Android.mk
+++ /dev/null
@@ -1,14 +0,0 @@
-EXTN_PN54X_PATH:= $(call my-dir)
-
-LOCAL_SHARED_LIBRARIES := \
-    libchrome \
-    libbase \
-
-LOCAL_C_INCLUDES += \
-    $(EXTN_PN54X_PATH)/inc \
-    $(EXTN_PN54X_PATH)/src/common \
-    $(EXTN_PN54X_PATH)/src/log \
-    $(EXTN_PN54X_PATH)/src/mifare \
-    $(EXTN_PN54X_PATH)/src/utils
-
-LOCAL_CFLAGS += -DNXP_UICC_ENABLE
diff --git a/nci/jni/extns/pn54x/src/log/phNxpLog.cpp b/nci/jni/extns/pn54x/src/log/phNxpLog.cpp
deleted file mode 100644
index ff904c5..0000000
--- a/nci/jni/extns/pn54x/src/log/phNxpLog.cpp
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <stdio.h>
-#include <string.h>
-#if !defined(NXPLOG__H_INCLUDED)
-#include "phNxpConfig.h"
-#include "phNxpLog.h"
-#endif
-#include <android-base/stringprintf.h>
-#include <base/logging.h>
-#include <cutils/properties.h>
-
-using android::base::StringPrintf;
-
-extern bool nfc_debug_enabled;
-
-const char* NXPLOG_ITEM_EXTNS = "NxpExtns";
-const char* NXPLOG_ITEM_NCIHAL = "NxpHal";
-const char* NXPLOG_ITEM_NCIX = "NxpNciX";
-const char* NXPLOG_ITEM_NCIR = "NxpNciR";
-const char* NXPLOG_ITEM_FWDNLD = "NxpFwDnld";
-const char* NXPLOG_ITEM_TML = "NxpTml";
-
-#ifdef NXP_HCI_REQ
-const char* NXPLOG_ITEM_HCPX = "NxpHcpX";
-const char* NXPLOG_ITEM_HCPR = "NxpHcpR";
-#endif /*NXP_HCI_REQ*/
-
-/* global log level structure */
-nci_log_level_t gLog_level;
-
-/*******************************************************************************
- *
- * Function         phNxpLog_SetGlobalLogLevel
- *
- * Description      Sets the global log level for all modules.
- *                  This value is set by Android property
- *nfc.nxp_log_level_global. If value can be overridden by module log level.
- *
- * Returns          The value of global log level
- *
- ******************************************************************************/
-static uint8_t phNxpLog_SetGlobalLogLevel(void) {
-  uint8_t level = NXPLOG_DEFAULT_LOGLEVEL;
-  unsigned long num = 0;
-  char valueStr[PROPERTY_VALUE_MAX] = {0};
-
-  int len = property_get(PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL, valueStr, "");
-  if (len > 0) {
-    /* let Android property override .conf variable */
-    sscanf(valueStr, "%lu", &num);
-    level = (unsigned char)num;
-  }
-  memset(&gLog_level, level, sizeof(nci_log_level_t));
-  return level;
-}
-
-/*******************************************************************************
- *
- * Function         phNxpLog_SetHALLogLevel
- *
- * Description      Sets the HAL layer log level.
- *
- * Returns          void
- *
- ******************************************************************************/
-static void phNxpLog_SetHALLogLevel(uint8_t level) {
-  unsigned long num = 0;
-  int len;
-  char valueStr[PROPERTY_VALUE_MAX] = {0};
-
-  if (GetNxpNumValue(NAME_NXPLOG_HAL_LOGLEVEL, &num, sizeof(num))) {
-    gLog_level.hal_log_level =
-        (level > (unsigned char)num) ? level : (unsigned char)num;
-    ;
-  }
-
-  len = property_get(PROP_NAME_NXPLOG_HAL_LOGLEVEL, valueStr, "");
-  if (len > 0) {
-    /* let Android property override .conf variable */
-    sscanf(valueStr, "%lu", &num);
-    gLog_level.hal_log_level = (unsigned char)num;
-  }
-
-  return;
-}
-
-/*******************************************************************************
- *
- * Function         phNxpLog_SetExtnsLogLevel
- *
- * Description      Sets the Extensions layer log level.
- *
- * Returns          void
- *
- ******************************************************************************/
-static void phNxpLog_SetExtnsLogLevel(uint8_t level) {
-  unsigned long num = 0;
-  int len;
-  char valueStr[PROPERTY_VALUE_MAX] = {0};
-  if (GetNxpNumValue(NAME_NXPLOG_EXTNS_LOGLEVEL, &num, sizeof(num))) {
-    gLog_level.extns_log_level =
-        (level > (unsigned char)num) ? level : (unsigned char)num;
-    ;
-  }
-
-  len = property_get(PROP_NAME_NXPLOG_EXTNS_LOGLEVEL, valueStr, "");
-  if (len > 0) {
-    /* let Android property override .conf variable */
-    sscanf(valueStr, "%lu", &num);
-    gLog_level.extns_log_level = (unsigned char)num;
-  }
-
-  return;
-}
-
-/*******************************************************************************
- *
- * Function         phNxpLog_SetTmlLogLevel
- *
- * Description      Sets the TML layer log level.
- *
- * Returns          void
- *
- ******************************************************************************/
-static void phNxpLog_SetTmlLogLevel(uint8_t level) {
-  unsigned long num = 0;
-  int len;
-  char valueStr[PROPERTY_VALUE_MAX] = {0};
-  if (GetNxpNumValue(NAME_NXPLOG_TML_LOGLEVEL, &num, sizeof(num))) {
-    gLog_level.tml_log_level =
-        (level > (unsigned char)num) ? level : (unsigned char)num;
-    ;
-  }
-
-  len = property_get(PROP_NAME_NXPLOG_TML_LOGLEVEL, valueStr, "");
-  if (len > 0) {
-    /* let Android property override .conf variable */
-    sscanf(valueStr, "%lu", &num);
-    gLog_level.tml_log_level = (unsigned char)num;
-  }
-
-  return;
-}
-
-/*******************************************************************************
- *
- * Function         phNxpLog_SetDnldLogLevel
- *
- * Description      Sets the FW download layer log level.
- *
- * Returns          void
- *
- ******************************************************************************/
-static void phNxpLog_SetDnldLogLevel(uint8_t level) {
-  unsigned long num = 0;
-  int len;
-  char valueStr[PROPERTY_VALUE_MAX] = {0};
-  if (GetNxpNumValue(NAME_NXPLOG_FWDNLD_LOGLEVEL, &num, sizeof(num))) {
-    gLog_level.dnld_log_level =
-        (level > (unsigned char)num) ? level : (unsigned char)num;
-    ;
-  }
-
-  len = property_get(PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL, valueStr, "");
-  if (len > 0) {
-    /* let Android property override .conf variable */
-    sscanf(valueStr, "%lu", &num);
-    gLog_level.dnld_log_level = (unsigned char)num;
-  }
-
-  return;
-}
-
-/*******************************************************************************
- *
- * Function         phNxpLog_SetNciTxLogLevel
- *
- * Description      Sets the NCI transaction layer log level.
- *
- * Returns          void
- *
- ******************************************************************************/
-static void phNxpLog_SetNciTxLogLevel(uint8_t level) {
-  unsigned long num = 0;
-  int len;
-  char valueStr[PROPERTY_VALUE_MAX] = {0};
-  if (GetNxpNumValue(NAME_NXPLOG_NCIX_LOGLEVEL, &num, sizeof(num))) {
-    gLog_level.ncix_log_level =
-        (level > (unsigned char)num) ? level : (unsigned char)num;
-  }
-  if (GetNxpNumValue(NAME_NXPLOG_NCIR_LOGLEVEL, &num, sizeof(num))) {
-    gLog_level.ncir_log_level =
-        (level > (unsigned char)num) ? level : (unsigned char)num;
-    ;
-  }
-
-  len = property_get(PROP_NAME_NXPLOG_NCI_LOGLEVEL, valueStr, "");
-  if (len > 0) {
-    /* let Android property override .conf variable */
-    sscanf(valueStr, "%lu", &num);
-    gLog_level.ncix_log_level = (unsigned char)num;
-    gLog_level.ncir_log_level = (unsigned char)num;
-  }
-
-  return;
-}
-
-/******************************************************************************
- * Function         phNxpLog_InitializeLogLevel
- *
- * Description      Initialize and get log level of module from libnfc-nxp.conf
- *or Android runtime properties. The Android property nfc.nxp_global_log_level
- *is to define log level for all modules. Modules log level
- *will override global level. The Android property will
- *override the level in libnfc-nxp.conf
- *
- *                  Android property names:
- *                      nfc.nxp_log_level_global    * defines log level for all
- *modules nfc.nxp_log_level_extns     * extensions module log
- *                      nfc.nxp_log_level_hal       * Hal module log
- *                      nfc.nxp_log_level_dnld      * firmware download module
- *log nfc.nxp_log_level_tml       * TML module log nfc.nxp_log_level_nci       *
- *NCI transaction log
- *
- *                  Log Level values:
- *                      NXPLOG_LOG_SILENT_LOGLEVEL  0        * No trace to show
- *                      NXPLOG_LOG_ERROR_LOGLEVEL   1        * Show Error trace
- *only NXPLOG_LOG_WARN_LOGLEVEL    2        * Show Warning trace and Error trace
- *                      NXPLOG_LOG_DEBUG_LOGLEVEL   3        * Show all traces
- *
- * Returns          void
- *
- ******************************************************************************/
-void phNxpLog_InitializeLogLevel(void) {
-  uint8_t level = phNxpLog_SetGlobalLogLevel();
-  phNxpLog_SetHALLogLevel(level);
-  phNxpLog_SetExtnsLogLevel(level);
-  phNxpLog_SetTmlLogLevel(level);
-  phNxpLog_SetDnldLogLevel(level);
-  phNxpLog_SetNciTxLogLevel(level);
-
-  DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
-      "%s: global =%u, Fwdnld =%u, extns =%u, \
-                hal =%u, tml =%u, ncir =%u, \
-                ncix =%u",
-      __func__, gLog_level.global_log_level, gLog_level.dnld_log_level,
-      gLog_level.extns_log_level, gLog_level.hal_log_level,
-      gLog_level.tml_log_level, gLog_level.ncir_log_level,
-      gLog_level.ncix_log_level);
-
-  return;
-}
diff --git a/nci/jni/extns/pn54x/src/log/phNxpLog.h b/nci/jni/extns/pn54x/src/log/phNxpLog.h
deleted file mode 100644
index b1bf53d..0000000
--- a/nci/jni/extns/pn54x/src/log/phNxpLog.h
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#if !defined(NXPLOG__H_INCLUDED)
-#define NXPLOG__H_INCLUDED
-
-#include <log/log.h>
-
-typedef struct nci_log_level {
-  uint8_t global_log_level;
-  uint8_t extns_log_level;
-  uint8_t hal_log_level;
-  uint8_t dnld_log_level;
-  uint8_t tml_log_level;
-  uint8_t ncix_log_level;
-  uint8_t ncir_log_level;
-} nci_log_level_t;
-
-/* global log level Ref */
-extern nci_log_level_t gLog_level;
-
-/* define log module included when compile */
-#define ENABLE_HAL_TRACES TRUE
-#define ENABLE_TML_TRACES TRUE
-#define ENABLE_FWDNLD_TRACES TRUE
-#define ENABLE_NCIX_TRACES TRUE
-#define ENABLE_NCIR_TRACES TRUE
-
-#define ENABLE_HCPX_TRACES FALSE
-#define ENABLE_HCPR_TRACES FALSE
-
-/* ####################### Set the log module name in .conf file
- * ########################## */
-#define NAME_NXPLOG_EXTNS_LOGLEVEL "NXPLOG_EXTNS_LOGLEVEL"
-#define NAME_NXPLOG_HAL_LOGLEVEL "NXPLOG_NCIHAL_LOGLEVEL"
-#define NAME_NXPLOG_NCIX_LOGLEVEL "NXPLOG_NCIX_LOGLEVEL"
-#define NAME_NXPLOG_NCIR_LOGLEVEL "NXPLOG_NCIR_LOGLEVEL"
-#define NAME_NXPLOG_FWDNLD_LOGLEVEL "NXPLOG_FWDNLD_LOGLEVEL"
-#define NAME_NXPLOG_TML_LOGLEVEL "NXPLOG_TML_LOGLEVEL"
-
-/* ####################### Set the log module name by Android property
- * ########################## */
-#define PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL "nfc.nxp_log_level_global"
-#define PROP_NAME_NXPLOG_EXTNS_LOGLEVEL "nfc.nxp_log_level_extns"
-#define PROP_NAME_NXPLOG_HAL_LOGLEVEL "nfc.nxp_log_level_hal"
-#define PROP_NAME_NXPLOG_NCI_LOGLEVEL "nfc.nxp_log_level_nci"
-#define PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL "nfc.nxp_log_level_dnld"
-#define PROP_NAME_NXPLOG_TML_LOGLEVEL "nfc.nxp_log_level_tml"
-
-/* ####################### Set the logging level for EVERY COMPONENT here
- * ######################## :START: */
-#define NXPLOG_LOG_SILENT_LOGLEVEL 0x00
-#define NXPLOG_LOG_ERROR_LOGLEVEL 0x01
-#define NXPLOG_LOG_WARN_LOGLEVEL 0x02
-#define NXPLOG_LOG_DEBUG_LOGLEVEL 0x03
-/* ####################### Set the default logging level for EVERY COMPONENT
- * here ########################## :END: */
-
-/* The Default log level for all the modules. */
-#define NXPLOG_DEFAULT_LOGLEVEL NXPLOG_LOG_ERROR_LOGLEVEL
-
-/* ################################################################################################################
- */
-/* ############################################### Component Names
- * ################################################ */
-/* ################################################################################################################
- */
-
-extern const char* NXPLOG_ITEM_EXTNS;  /* Android logging tag for NxpExtns  */
-extern const char* NXPLOG_ITEM_NCIHAL; /* Android logging tag for NxpNciHal */
-extern const char* NXPLOG_ITEM_NCIX;   /* Android logging tag for NxpNciX   */
-extern const char* NXPLOG_ITEM_NCIR;   /* Android logging tag for NxpNciR   */
-extern const char* NXPLOG_ITEM_FWDNLD; /* Android logging tag for NxpFwDnld */
-extern const char* NXPLOG_ITEM_TML;    /* Android logging tag for NxpTml    */
-
-#ifdef NXP_HCI_REQ
-extern const char* NXPLOG_ITEM_HCPX; /* Android logging tag for NxpHcpX   */
-extern const char* NXPLOG_ITEM_HCPR; /* Android logging tag for NxpHcpR   */
-#endif                               /*NXP_HCI_REQ*/
-
-/* ######################################## Defines used for Logging data
- * ######################################### */
-#ifdef NXP_VRBS_REQ
-#define NXPLOG_FUNC_ENTRY(COMP) \
-  LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "+:%s", (__func__))
-#define NXPLOG_FUNC_EXIT(COMP) \
-  LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "-:%s", (__func__))
-#endif /*NXP_VRBS_REQ*/
-
-/* ################################################################################################################
- */
-/* ######################################## Logging APIs of actual modules
- * ######################################## */
-/* ################################################################################################################
- */
-/* Logging APIs used by NxpNciHal module */
-#if (ENABLE_HAL_TRACES == TRUE)
-#define NXPLOG_NCIHAL_D(...)                                       \
-  {                                                                \
-    if (gLog_level.hal_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)     \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
-  }
-#define NXPLOG_NCIHAL_W(...)                                      \
-  {                                                               \
-    if (gLog_level.hal_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)     \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
-  }
-#define NXPLOG_NCIHAL_E(...)                                       \
-  {                                                                \
-    if (gLog_level.hal_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)     \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_NCIHAL_D(...)
-#define NXPLOG_NCIHAL_W(...)
-#define NXPLOG_NCIHAL_E(...)
-#endif /* Logging APIs used by HAL module */
-
-/* Logging APIs used by NxpNciX module */
-#if (ENABLE_NCIX_TRACES == TRUE)
-#define NXPLOG_NCIX_D(...)                                       \
-  {                                                              \
-    if (gLog_level.ncix_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
-  }
-#define NXPLOG_NCIX_W(...)                                      \
-  {                                                             \
-    if (gLog_level.ncix_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
-  }
-#define NXPLOG_NCIX_E(...)                                       \
-  {                                                              \
-    if (gLog_level.ncix_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_NCIX_D(...)
-#define NXPLOG_NCIX_W(...)
-#define NXPLOG_NCIX_E(...)
-#endif /* Logging APIs used by NCIx module */
-
-/* Logging APIs used by NxpNciR module */
-#if (ENABLE_NCIR_TRACES == TRUE)
-#define NXPLOG_NCIR_D(...)                                       \
-  {                                                              \
-    if (gLog_level.ncir_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
-  }
-#define NXPLOG_NCIR_W(...)                                      \
-  {                                                             \
-    if (gLog_level.ncir_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
-  }
-#define NXPLOG_NCIR_E(...)                                       \
-  {                                                              \
-    if (gLog_level.ncir_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_NCIR_D(...)
-#define NXPLOG_NCIR_W(...)
-#define NXPLOG_NCIR_E(...)
-#endif /* Logging APIs used by NCIR module */
-
-/* Logging APIs used by NxpFwDnld module */
-#if (ENABLE_FWDNLD_TRACES == TRUE)
-#define NXPLOG_FWDNLD_D(...)                                       \
-  {                                                                \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#define NXPLOG_FWDNLD_W(...)                                      \
-  {                                                               \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#define NXPLOG_FWDNLD_E(...)                                       \
-  {                                                                \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_FWDNLD_D(...)
-#define NXPLOG_FWDNLD_W(...)
-#define NXPLOG_FWDNLD_E(...)
-#endif /* Logging APIs used by NxpFwDnld module */
-
-/* Logging APIs used by NxpTml module */
-#if (ENABLE_TML_TRACES == TRUE)
-#define NXPLOG_TML_D(...)                                       \
-  {                                                             \
-    if (gLog_level.tml_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_TML, __VA_ARGS__); \
-  }
-#define NXPLOG_TML_W(...)                                      \
-  {                                                            \
-    if (gLog_level.tml_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_TML, __VA_ARGS__); \
-  }
-#define NXPLOG_TML_E(...)                                       \
-  {                                                             \
-    if (gLog_level.tml_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_TML, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_TML_D(...)
-#define NXPLOG_TML_W(...)
-#define NXPLOG_TML_E(...)
-#endif /* Logging APIs used by NxpTml module */
-
-#ifdef NXP_HCI_REQ
-/* Logging APIs used by NxpHcpX module */
-#if (ENABLE_HCPX_TRACES == TRUE)
-#define NXPLOG_HCPX_D(...)                                         \
-  {                                                                \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#define NXPLOG_HCPX_W(...)                                        \
-  {                                                               \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#define NXPLOG_HCPX_E(...)                                         \
-  {                                                                \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_HCPX_D(...)
-#define NXPLOG_HCPX_W(...)
-#define NXPLOG_HCPX_E(...)
-#endif /* Logging APIs used by NxpHcpX module */
-
-/* Logging APIs used by NxpHcpR module */
-#if (ENABLE_HCPR_TRACES == TRUE)
-#define NXPLOG_HCPR_D(...)                                         \
-  {                                                                \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#define NXPLOG_HCPR_W(...)                                        \
-  {                                                               \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#define NXPLOG_HCPR_E(...)                                         \
-  {                                                                \
-    if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)    \
-      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
-  }
-#else
-#define NXPLOG_HCPR_D(...)
-#define NXPLOG_HCPR_W(...)
-#define NXPLOG_HCPR_E(...)
-#endif /* Logging APIs used by NxpHcpR module */
-#endif /* NXP_HCI_REQ */
-
-#ifdef NXP_VRBS_REQ
-#if (ENABLE_HAL_TRACES == TRUE)
-#define NXPLOG_NCIHAL_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIHAL)
-#define NXPLOG_NCIHAL_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIHAL)
-#else
-#define NXPLOG_NCIHAL_ENTRY()
-#define NXPLOG_NCIHAL_EXIT()
-#endif
-
-#if (ENABLE_NCIX_TRACES == TRUE)
-#define NXPLOG_NCIX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIX)
-#define NXPLOG_NCIX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIX)
-#else
-#define NXPLOG_NCIX_ENTRY()
-#define NXPLOG_NCIX_EXIT()
-#endif
-
-#if (ENABLE_NCIR_TRACES == TRUE)
-#define NXPLOG_NCIR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIR)
-#define NXPLOG_NCIR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIR)
-#else
-#define NXPLOG_NCIR_ENTRY()
-#define NXPLOG_NCIR_EXIT()
-#endif
-
-#ifdef NXP_HCI_REQ
-
-#if (ENABLE_HCPX_TRACES == TRUE)
-#define NXPLOG_HCPX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPX)
-#define NXPLOG_HCPX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPX)
-#else
-#define NXPLOG_HCPX_ENTRY()
-#define NXPLOG_HCPX_EXIT()
-#endif
-
-#if (ENABLE_HCPR_TRACES == TRUE)
-#define NXPLOG_HCPR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPR)
-#define NXPLOG_HCPR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPR)
-#else
-#define NXPLOG_HCPR_ENTRY()
-#define NXPLOG_HCPR_EXIT()
-#endif
-#endif /* NXP_HCI_REQ */
-
-#endif /* NXP_VRBS_REQ */
-
-void phNxpLog_InitializeLogLevel(void);
-
-#endif /* NXPLOG__H_INCLUDED */
diff --git a/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifStdFormat.cpp b/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifStdFormat.cpp
index 0d9eb11..0e09b3a 100644
--- a/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifStdFormat.cpp
+++ b/nci/jni/extns/pn54x/src/mifare/phFriNfc_MifStdFormat.cpp
@@ -21,7 +21,6 @@
 #include <phFriNfc_MifStdFormat.h>
 #include <phNfcCompId.h>
 #include <phNxpExtns_MifareStd.h>
-#include <phNxpLog.h>
 
 #include <android-base/stringprintf.h>
 #include <base/logging.h>
diff --git a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
index 1261c3f..e40530d 100644
--- a/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
+++ b/nci/jni/extns/pn54x/src/mifare/phNxpExtns_MifareStd.cpp
@@ -20,7 +20,6 @@
 #include <nfc_int.h>
 #include <phNfcCompId.h>
 #include <phNxpExtns_MifareStd.h>
-#include <phNxpLog.h>
 #include <rw_api.h>
 
 using android::base::StringPrintf;
@@ -145,10 +144,6 @@
   pthread_mutex_lock(&SharedDataMutex);
 #endif
   if (NULL != NdefInfo.psUpperNdefMsg) {
-    if (NdefInfo.psUpperNdefMsg->buffer != NULL) {
-      free(NdefInfo.psUpperNdefMsg->buffer);
-      NdefInfo.psUpperNdefMsg->buffer = NULL;
-    }
     free(NdefInfo.psUpperNdefMsg);
     NdefInfo.psUpperNdefMsg = NULL;
   }
@@ -353,7 +348,7 @@
     NdefInfo.is_ndef = 1;
     NdefInfo.NdefActualSize = conn_evt_data.ndef_detect.cur_size;
     if (PH_NDEFMAP_CARD_STATE_READ_ONLY == NdefMap->CardState) {
-      DLOG_IF(INFO, gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)
+      DLOG_IF(INFO, nfc_debug_enabled)
           << StringPrintf("Mfc_CheckNdef_Completion_Routine : READ_ONLY_CARD");
       conn_evt_data.ndef_detect.flags = RW_NDEF_FL_READ_ONLY;
     } else {
@@ -554,7 +549,7 @@
 **
 *******************************************************************************/
 NFCSTATUS Mfc_SetReadOnly(uint8_t* secrtkey, uint8_t len) {
-  DLOG_IF(INFO, gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)
+  DLOG_IF(INFO, nfc_debug_enabled)
       << StringPrintf("%s Entering ", __func__);
   NFCSTATUS status = NFCSTATUS_FAILED;
   uint8_t mif_secrete_key[6] = {0};
@@ -710,7 +705,7 @@
   } else {
     status = NFCSTATUS_NOT_ALLOWED;
   }
-  DLOG_IF(INFO, gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)
+  DLOG_IF(INFO, nfc_debug_enabled)
       << StringPrintf("%s status = 0x%x", __func__, status);
   return status;
 }
diff --git a/nci/jni/extns/pn54x/src/phNxpExtns.cpp b/nci/jni/extns/pn54x/src/phNxpExtns.cpp
index 9435a0b..0c4d0ff 100644
--- a/nci/jni/extns/pn54x/src/phNxpExtns.cpp
+++ b/nci/jni/extns/pn54x/src/phNxpExtns.cpp
@@ -22,9 +22,7 @@
 
 #include <android-base/stringprintf.h>
 #include <base/logging.h>
-#include <phNxpConfig.h>
 #include <phNxpExtns_MifareStd.h>
-#include <phNxpLog.h>
 
 using android::base::StringPrintf;
 
@@ -59,12 +57,6 @@
                      tNFA_CONN_CBACK* p_nfa_conn_cback) {
   NFCSTATUS status = NFCSTATUS_FAILED;
 
-  /* reset config cache */
-  resetNxpConfig();
-
-  /* Initialize Log level */
-  phNxpLog_InitializeLogLevel();
-
   /* Validate parameters */
   if ((!p_nfa_dm_cback) || (!p_nfa_conn_cback)) {
     LOG(ERROR) << StringPrintf("EXTNS_Init(): error null callback");
diff --git a/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp b/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp
deleted file mode 100644
index b5935de..0000000
--- a/nci/jni/extns/pn54x/src/utils/phNxpConfig.cpp
+++ /dev/null
@@ -1,832 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <phNxpConfig.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <list>
-#include <string>
-#include <vector>
-
-#include <android-base/stringprintf.h>
-#include <base/logging.h>
-#include <phNxpLog.h>
-
-using android::base::StringPrintf;
-
-extern bool nfc_debug_enabled;
-
-#if GENERIC_TARGET
-const char alternative_config_path[] = "/data/nfc/";
-#else
-const char alternative_config_path[] = "";
-#endif
-
-#if 1
-const char* transport_config_paths[] = {"/odm/etc/", "/vendor/etc/", "/etc/"};
-#else
-const char* transport_config_paths[] = {"res/"};
-#endif
-const int transport_config_path_size =
-    (sizeof(transport_config_paths) / sizeof(transport_config_paths[0]));
-
-#define config_name "libnfc-nxp.conf"
-#define extra_config_base "libnfc-nxp-"
-#define extra_config_ext ".conf"
-#define IsStringValue 0x80000000
-
-const char config_timestamp_path[] = "/data/nfc/libnfc-nxpConfigState.bin";
-
-using namespace ::std;
-
-class CNxpNfcParam : public string {
- public:
-  CNxpNfcParam();
-  CNxpNfcParam(const char* name, const string& value);
-  CNxpNfcParam(const char* name, unsigned long value);
-  virtual ~CNxpNfcParam();
-  unsigned long numValue() const { return m_numValue; }
-  const char* str_value() const { return m_str_value.c_str(); }
-  size_t str_len() const { return m_str_value.length(); }
-
- private:
-  string m_str_value;
-  unsigned long m_numValue;
-};
-
-class CNxpNfcConfig : public vector<const CNxpNfcParam*> {
- public:
-  virtual ~CNxpNfcConfig();
-  static CNxpNfcConfig& GetInstance();
-  friend void readOptionalConfig(const char* optional);
-  int checkTimestamp();
-
-  bool getValue(const char* name, char* pValue, size_t len) const;
-  bool getValue(const char* name, unsigned long& rValue) const;
-  bool getValue(const char* name, unsigned short& rValue) const;
-  bool getValue(const char* name, char* pValue, long len, long* readlen) const;
-  const CNxpNfcParam* find(const char* p_name) const;
-  void clean();
-
- private:
-  CNxpNfcConfig();
-  bool readConfig(const char* name, bool bResetContent);
-  void moveFromList();
-  void moveToList();
-  void add(const CNxpNfcParam* pParam);
-  list<const CNxpNfcParam*> m_list;
-  bool mValidFile;
-  unsigned long m_timeStamp;
-
-  unsigned long state;
-
-  inline bool Is(unsigned long f) { return (state & f) == f; }
-  inline void Set(unsigned long f) { state |= f; }
-  inline void Reset(unsigned long f) { state &= ~f; }
-};
-
-/*******************************************************************************
-**
-** Function:    isPrintable()
-**
-** Description: determine if 'c' is printable
-**
-** Returns:     1, if printable, otherwise 0
-**
-*******************************************************************************/
-inline bool isPrintable(char c) {
-  return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') ||
-         (c >= '0' && c <= '9') || c == '/' || c == '_' || c == '-' || c == '.';
-}
-
-/*******************************************************************************
-**
-** Function:    isDigit()
-**
-** Description: determine if 'c' is numeral digit
-**
-** Returns:     true, if numerical digit
-**
-*******************************************************************************/
-inline bool isDigit(char c, int base) {
-  if ('0' <= c && c <= '9') return true;
-  if (base == 16) {
-    if (('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')) return true;
-  }
-  return false;
-}
-
-/*******************************************************************************
-**
-** Function:    getDigitValue()
-**
-** Description: return numerical value of a decimal or hex char
-**
-** Returns:     numerical value if decimal or hex char, otherwise 0
-**
-*******************************************************************************/
-inline int getDigitValue(char c, int base) {
-  if ('0' <= c && c <= '9') return c - '0';
-  if (base == 16) {
-    if ('A' <= c && c <= 'F')
-      return c - 'A' + 10;
-    else if ('a' <= c && c <= 'f')
-      return c - 'a' + 10;
-  }
-  return 0;
-}
-
-/*******************************************************************************
-**
-** Function:    findConfigFilePathFromTransportConfigPaths()
-**
-** Description: find a config file path with a given config name from transport
-**              config paths
-**
-** Returns:     none
-**
-*******************************************************************************/
-void findConfigFilePathFromTransportConfigPaths(const string& configName,
-                                                string& filePath) {
-  for (int i = 0; i < transport_config_path_size - 1; i++) {
-    filePath.assign(transport_config_paths[i]);
-    filePath += configName;
-    struct stat file_stat;
-    if (stat(filePath.c_str(), &file_stat) == 0 && S_ISREG(file_stat.st_mode)) {
-      return;
-    }
-  }
-  filePath.assign(transport_config_paths[transport_config_path_size - 1]);
-  filePath += configName;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::readConfig()
-**
-** Description: read Config settings and parse them into a linked list
-**              move the element from linked list to a array at the end
-**
-** Returns:     1, if there are any config data, 0 otherwise
-**
-*******************************************************************************/
-bool CNxpNfcConfig::readConfig(const char* name, bool bResetContent) {
-  enum {
-    BEGIN_LINE = 1,
-    TOKEN,
-    STR_VALUE,
-    NUM_VALUE,
-    BEGIN_HEX,
-    BEGIN_QUOTE,
-    END_LINE
-  };
-
-  FILE* fd;
-  struct stat buf;
-  string token;
-  string strValue;
-  unsigned long numValue = 0;
-  CNxpNfcParam* pParam = NULL;
-  int i = 0;
-  int base = 0;
-  char c;
-  int bflag = 0;
-  state = BEGIN_LINE;
-  /* open config file, read it into a buffer */
-  if ((fd = fopen(name, "rb")) == NULL) {
-    LOG(ERROR) << StringPrintf("%s Cannot open config file %s", __func__, name);
-    if (bResetContent) {
-      LOG(ERROR) << StringPrintf("%s Using default value for all settings",
-                                 __func__);
-      mValidFile = false;
-    }
-    return false;
-  }
-  stat(name, &buf);
-  m_timeStamp = (unsigned long)buf.st_mtime;
-
-  mValidFile = true;
-  if (size() > 0) {
-    if (bResetContent)
-      clean();
-    else
-      moveToList();
-  }
-
-  while (!feof(fd) && fread(&c, 1, 1, fd) == 1) {
-    switch (state & 0xff) {
-      case BEGIN_LINE:
-        if (c == '#') {
-          state = END_LINE;
-        } else if (isPrintable(c)) {
-          i = 0;
-          token.erase();
-          strValue.erase();
-          state = TOKEN;
-          token.push_back(c);
-        }
-        break;
-      case TOKEN:
-        if (c == '=') {
-          token.push_back('\0');
-          state = BEGIN_QUOTE;
-        } else if (isPrintable(c)) {
-          token.push_back(c);
-        } else {
-          state = END_LINE;
-        }
-        break;
-      case BEGIN_QUOTE:
-        if (c == '"') {
-          state = STR_VALUE;
-          base = 0;
-        } else if (c == '0') {
-          state = BEGIN_HEX;
-        } else if (isDigit(c, 10)) {
-          state = NUM_VALUE;
-          base = 10;
-          numValue = getDigitValue(c, base);
-          i = 0;
-        } else if (c == '{') {
-          state = NUM_VALUE;
-          bflag = 1;
-          base = 16;
-          i = 0;
-          Set(IsStringValue);
-        } else
-          state = END_LINE;
-
-        break;
-      case BEGIN_HEX:
-        if (c == 'x' || c == 'X') {
-          state = NUM_VALUE;
-          base = 16;
-          numValue = 0;
-          i = 0;
-          break;
-        } else if (isDigit(c, 10)) {
-          state = NUM_VALUE;
-          base = 10;
-          numValue = getDigitValue(c, base);
-          break;
-        } else if (c != '\n' && c != '\r') {
-          state = END_LINE;
-          break;
-        }
-      // fall through to numValue to handle numValue
-
-      case NUM_VALUE:
-        if (isDigit(c, base)) {
-          numValue *= base;
-          numValue += getDigitValue(c, base);
-          ++i;
-        } else if (bflag == 1 &&
-                   (c == ' ' || c == '\r' || c == '\n' || c == '\t')) {
-          break;
-        } else if (base == 16 &&
-                   (c == ',' || c == ':' || c == '-' || c == ' ' || c == '}')) {
-          if (c == '}') {
-            bflag = 0;
-          }
-          if (i > 0) {
-            int n = (i + 1) / 2;
-            while (n-- > 0) {
-              numValue = numValue >> (n * 8);
-              unsigned char c = (numValue)&0xFF;
-              strValue.push_back(c);
-            }
-          }
-
-          Set(IsStringValue);
-          numValue = 0;
-          i = 0;
-        } else {
-          if (c == '\n' || c == '\r') {
-            if (bflag == 0) {
-              state = BEGIN_LINE;
-            }
-          } else {
-            if (bflag == 0) {
-              state = END_LINE;
-            }
-          }
-          if (Is(IsStringValue) && base == 16 && i > 0) {
-            int n = (i + 1) / 2;
-            while (n-- > 0) strValue.push_back(((numValue >> (n * 8)) & 0xFF));
-          }
-          if (strValue.length() > 0)
-            pParam = new CNxpNfcParam(token.c_str(), strValue);
-          else
-            pParam = new CNxpNfcParam(token.c_str(), numValue);
-
-          add(pParam);
-          strValue.erase();
-          numValue = 0;
-        }
-        break;
-      case STR_VALUE:
-        if (c == '"') {
-          strValue.push_back('\0');
-          state = END_LINE;
-          pParam = new CNxpNfcParam(token.c_str(), strValue);
-          add(pParam);
-        } else if (isPrintable(c)) {
-          strValue.push_back(c);
-        }
-        break;
-      case END_LINE:
-        if (c == '\n' || c == '\r') {
-          state = BEGIN_LINE;
-        }
-        break;
-      default:
-        break;
-    }
-  }
-
-  fclose(fd);
-
-  moveFromList();
-  return size() > 0;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::CNxpNfcConfig()
-**
-** Description: class constructor
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcConfig::CNxpNfcConfig() : mValidFile(true), m_timeStamp(0), state(0) {}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::~CNxpNfcConfig()
-**
-** Description: class destructor
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcConfig::~CNxpNfcConfig() {}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::GetInstance()
-**
-** Description: get class singleton object
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcConfig& CNxpNfcConfig::GetInstance() {
-  static CNxpNfcConfig theInstance;
-
-  if (theInstance.size() == 0 && theInstance.mValidFile) {
-    string strPath;
-    if (alternative_config_path[0] != '\0') {
-      strPath.assign(alternative_config_path);
-      strPath += config_name;
-      theInstance.readConfig(strPath.c_str(), true);
-      if (!theInstance.empty()) {
-        return theInstance;
-      }
-    }
-    findConfigFilePathFromTransportConfigPaths(config_name, strPath);
-    theInstance.readConfig(strPath.c_str(), true);
-  }
-
-  return theInstance;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::getValue()
-**
-** Description: get a string value of a setting
-**
-** Returns:     true if setting exists
-**              false if setting does not exist
-**
-*******************************************************************************/
-bool CNxpNfcConfig::getValue(const char* name, char* pValue, size_t len) const {
-  const CNxpNfcParam* pParam = find(name);
-  if (pParam == NULL) return false;
-
-  if (pParam->str_len() > 0) {
-    memset(pValue, 0, len);
-    memcpy(pValue, pParam->str_value(), pParam->str_len());
-    return true;
-  }
-  return false;
-}
-
-bool CNxpNfcConfig::getValue(const char* name, char* pValue, long len,
-                             long* readlen) const {
-  const CNxpNfcParam* pParam = find(name);
-  if (pParam == NULL) return false;
-
-  if (pParam->str_len() > 0) {
-    if (pParam->str_len() <= (unsigned long)len) {
-      memset(pValue, 0, len);
-      memcpy(pValue, pParam->str_value(), pParam->str_len());
-      *readlen = pParam->str_len();
-    } else {
-      *readlen = -1;
-    }
-
-    return true;
-  }
-  return false;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::getValue()
-**
-** Description: get a long numerical value of a setting
-**
-** Returns:     true if setting exists
-**              false if setting does not exist
-**
-*******************************************************************************/
-bool CNxpNfcConfig::getValue(const char* name, unsigned long& rValue) const {
-  const CNxpNfcParam* pParam = find(name);
-  if (pParam == NULL) return false;
-
-  if (pParam->str_len() == 0) {
-    rValue = static_cast<unsigned long>(pParam->numValue());
-    return true;
-  }
-  return false;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::getValue()
-**
-** Description: get a short numerical value of a setting
-**
-** Returns:     true if setting exists
-**              false if setting does not exist
-**
-*******************************************************************************/
-bool CNxpNfcConfig::getValue(const char* name, unsigned short& rValue) const {
-  const CNxpNfcParam* pParam = find(name);
-  if (pParam == NULL) return false;
-
-  if (pParam->str_len() == 0) {
-    rValue = static_cast<unsigned short>(pParam->numValue());
-    return true;
-  }
-  return false;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::find()
-**
-** Description: search if a setting exist in the setting array
-**
-** Returns:     pointer to the setting object
-**
-*******************************************************************************/
-const CNxpNfcParam* CNxpNfcConfig::find(const char* p_name) const {
-  if (size() == 0) return NULL;
-
-  for (const_iterator it = begin(), itEnd = end(); it != itEnd; ++it) {
-    if (**it < p_name) {
-      continue;
-    } else if (**it == p_name) {
-      if ((*it)->str_len() > 0) {
-        DLOG_IF(INFO, gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)
-            << StringPrintf("%s found %s=%s\n", __func__, p_name,
-                            (*it)->str_value());
-      } else {
-        DLOG_IF(INFO, gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL)
-            << StringPrintf("%s found %s=(0x%lx)\n", __func__, p_name,
-                            (*it)->numValue());
-      }
-      return *it;
-    } else
-      break;
-  }
-  return NULL;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::clean()
-**
-** Description: reset the setting array
-**
-** Returns:     none
-**
-*******************************************************************************/
-void CNxpNfcConfig::clean() {
-  if (size() == 0) return;
-
-  for (iterator it = begin(), itEnd = end(); it != itEnd; ++it) delete *it;
-
-  clear();
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::Add()
-**
-** Description: add a setting object to the list
-**
-** Returns:     none
-**
-*******************************************************************************/
-void CNxpNfcConfig::add(const CNxpNfcParam* pParam) {
-  if (m_list.size() == 0) {
-    m_list.push_back(pParam);
-    return;
-  }
-  for (list<const CNxpNfcParam*>::iterator it = m_list.begin(),
-                                           itEnd = m_list.end();
-       it != itEnd; ++it) {
-    if (**it < pParam->c_str()) continue;
-
-    m_list.insert(it, pParam);
-    return;
-  }
-  m_list.push_back(pParam);
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::moveFromList()
-**
-** Description: move the setting object from list to array
-**
-** Returns:     none
-**
-*******************************************************************************/
-void CNxpNfcConfig::moveFromList() {
-  if (m_list.size() == 0) return;
-
-  for (list<const CNxpNfcParam*>::iterator it = m_list.begin(),
-                                           itEnd = m_list.end();
-       it != itEnd; ++it)
-    push_back(*it);
-
-  m_list.clear();
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::moveToList()
-**
-** Description: move the setting object from array to list
-**
-** Returns:     none
-**
-*******************************************************************************/
-void CNxpNfcConfig::moveToList() {
-  if (m_list.size() != 0) m_list.clear();
-
-  for (iterator it = begin(), itEnd = end(); it != itEnd; ++it)
-    m_list.push_back(*it);
-
-  clear();
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcConfig::checkTimestamp()
-**
-** Description: check if config file has modified
-**
-** Returns:     0 if not modified, 1 otherwise.
-**
-*******************************************************************************/
-int CNxpNfcConfig::checkTimestamp() {
-  FILE* fd;
-  struct stat st;
-  unsigned long value = 0;
-  int ret = 0;
-
-  if (stat(config_timestamp_path, &st) != 0) {
-    DLOG_IF(INFO, nfc_debug_enabled) << StringPrintf(
-        "%s file %s not exist, creat it.", __func__, config_timestamp_path);
-    if ((fd = fopen(config_timestamp_path, "w+")) != NULL) {
-      fwrite(&m_timeStamp, sizeof(unsigned long), 1, fd);
-      fclose(fd);
-    }
-    return 1;
-  } else {
-    fd = fopen(config_timestamp_path, "r+");
-    if (fd == NULL) {
-      LOG(ERROR) << StringPrintf("%s Cannot open file %s", __func__,
-                                 config_timestamp_path);
-      return 1;
-    }
-
-    fread(&value, sizeof(unsigned long), 1, fd);
-    ret = (value != m_timeStamp);
-    if (ret) {
-      fseek(fd, 0, SEEK_SET);
-      fwrite(&m_timeStamp, sizeof(unsigned long), 1, fd);
-    }
-    fclose(fd);
-  }
-  return ret;
-}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcParam::CNxpNfcParam()
-**
-** Description: class constructor
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcParam::CNxpNfcParam() : m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcParam::~CNxpNfcParam()
-**
-** Description: class destructor
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcParam::~CNxpNfcParam() {}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcParam::CNxpNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcParam::CNxpNfcParam(const char* name, const string& value)
-    : string(name), m_str_value(value), m_numValue(0) {}
-
-/*******************************************************************************
-**
-** Function:    CNxpNfcParam::CNxpNfcParam()
-**
-** Description: class copy constructor
-**
-** Returns:     none
-**
-*******************************************************************************/
-CNxpNfcParam::CNxpNfcParam(const char* name, unsigned long value)
-    : string(name), m_numValue(value) {}
-
-/*******************************************************************************
-**
-** Function:    GetStrValue
-**
-** Description: API function for getting a string value of a setting
-**
-** Returns:     True if found, otherwise False.
-**
-*******************************************************************************/
-extern int GetNxpStrValue(const char* name, char* pValue, unsigned long len) {
-  CNxpNfcConfig& rConfig = CNxpNfcConfig::GetInstance();
-
-  return rConfig.getValue(name, pValue, len);
-}
-
-/*******************************************************************************
-**
-** Function:    GetByteArrayValue()
-**
-** Description: Read byte array value from the config file.
-**
-** Parameters:
-**              name    - name of the config param to read.
-**              pValue  - pointer to input buffer.
-**              bufflen - input buffer length.
-**              len     - out parameter to return the number of bytes read from
-*config file,
-**                        return -1 in case bufflen is not enough.
-**
-** Returns:     TRUE[1] if config param name is found in the config file, else
-*FALSE[0]
-**
-*******************************************************************************/
-extern int GetNxpByteArrayValue(const char* name, char* pValue, long bufflen,
-                                long* len) {
-  CNxpNfcConfig& rConfig = CNxpNfcConfig::GetInstance();
-
-  return rConfig.getValue(name, pValue, bufflen, len);
-}
-
-/*******************************************************************************
-**
-** Function:    GetNumValue
-**
-** Description: API function for getting a numerical value of a setting
-**
-** Returns:     true, if successful
-**
-*******************************************************************************/
-extern int GetNxpNumValue(const char* name, void* pValue, unsigned long len) {
-  if (!pValue) return false;
-
-  CNxpNfcConfig& rConfig = CNxpNfcConfig::GetInstance();
-  const CNxpNfcParam* pParam = rConfig.find(name);
-
-  if (pParam == NULL) return false;
-
-  unsigned long v = pParam->numValue();
-  if (v == 0 && pParam->str_len() > 0 && pParam->str_len() < 4) {
-    const unsigned char* p = (const unsigned char*)pParam->str_value();
-    for (unsigned int i = 0; i < pParam->str_len(); ++i) {
-      v *= 256;
-      v += *p++;
-    }
-  }
-  switch (len) {
-    case sizeof(unsigned long):
-      *(static_cast<unsigned long*>(pValue)) = (unsigned long)v;
-      break;
-    case sizeof(unsigned short):
-      *(static_cast<unsigned short*>(pValue)) = (unsigned short)v;
-      break;
-    case sizeof(unsigned char):
-      *(static_cast<unsigned char*>(pValue)) = (unsigned char)v;
-      break;
-    default:
-      return false;
-  }
-  return true;
-}
-
-/*******************************************************************************
-**
-** Function:    resetConfig
-**
-** Description: reset settings array
-**
-** Returns:     none
-**
-*******************************************************************************/
-extern void resetNxpConfig() {
-  CNxpNfcConfig& rConfig = CNxpNfcConfig::GetInstance();
-
-  rConfig.clean();
-}
-
-/*******************************************************************************
-**
-** Function:    readOptionalConfig()
-**
-** Description: read Config settings from an optional conf file
-**
-** Returns:     none
-**
-*******************************************************************************/
-void readOptionalConfig(const char* extra) {
-  string strPath;
-  string configName(extra_config_base);
-  configName += extra;
-  configName += extra_config_ext;
-
-  if (alternative_config_path[0] != '\0') {
-    strPath.assign(alternative_config_path);
-    strPath += configName;
-  } else {
-    findConfigFilePathFromTransportConfigPaths(configName, strPath);
-  }
-
-  CNxpNfcConfig::GetInstance().readConfig(strPath.c_str(), false);
-}
-
-/*******************************************************************************
-**
-** Function:    isNxpConfigModified()
-**
-** Description: check if config file has modified
-**
-** Returns:     0 if not modified, 1 otherwise.
-**
-*******************************************************************************/
-extern int isNxpConfigModified() {
-  CNxpNfcConfig& rConfig = CNxpNfcConfig::GetInstance();
-  return rConfig.checkTimestamp();
-}
diff --git a/nci/jni/extns/pn54x/src/utils/phNxpConfig.h b/nci/jni/extns/pn54x/src/utils/phNxpConfig.h
deleted file mode 100644
index 8040c24..0000000
--- a/nci/jni/extns/pn54x/src/utils/phNxpConfig.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef _NXP_CONFIG_H
-#define _NXP_CONFIG_H
-
-int GetNxpStrValue(const char* name, char* p_value, unsigned long len);
-int GetNxpNumValue(const char* name, void* p_value, unsigned long len);
-int GetNxpByteArrayValue(const char* name, char* pValue, long bufflen,
-                         long* len);
-void resetNxpConfig(void);
-int isNxpConfigModified();
-
-#define NAME_NXPLOG_EXTNS_LOGLEVEL "NXPLOG_EXTNS_LOGLEVEL"
-#define NAME_NXPLOG_NCIHAL_LOGLEVEL "NXPLOG_NCIHAL_LOGLEVEL"
-#define NAME_NXPLOG_NCIX_LOGLEVEL "NXPLOG_NCIX_LOGLEVEL"
-#define NAME_NXPLOG_NCIR_LOGLEVEL "NXPLOG_NCIR_LOGLEVEL"
-#define NAME_NXPLOG_FWDNLD_LOGLEVEL "NXPLOG_FWDNLD_LOGLEVEL"
-#define NAME_NXPLOG_TML_LOGLEVEL "NXPLOG_TML_LOGLEVEL"
-
-#define NAME_MIFARE_READER_ENABLE "MIFARE_READER_ENABLE"
-#define NAME_FW_STORAGE "FW_STORAGE"
-#define NAME_NXP_ACT_PROP_EXTN "NXP_ACT_PROP_EXTN"
-#define NAME_NXP_RF_CONF_BLK_1 "NXP_RF_CONF_BLK_1"
-#define NAME_NXP_RF_CONF_BLK_2 "NXP_RF_CONF_BLK_2"
-#define NAME_NXP_RF_CONF_BLK_3 "NXP_RF_CONF_BLK_3"
-#define NAME_NXP_RF_CONF_BLK_4 "NXP_RF_CONF_BLK_4"
-#define NAME_NXP_CORE_CONF_EXTN "NXP_CORE_CONF_EXTN"
-#define NAME_NXP_CORE_CONF "NXP_CORE_CONF"
-#define NAME_NXP_CORE_MFCKEY_SETTING "NXP_CORE_MFCKEY_SETTING"
-#define NAME_NXP_CORE_STANDBY "NXP_CORE_STANDBY"
-#define NAME_NXP_DEFAULT_SE "NXP_DEFAULT_SE"
-#define NAME_NXP_NFC_CHIP "NXP_NFC_CHIP"
-#define NAME_NXP_SWP_RD_START_TIMEOUT "NXP_SWP_RD_START_TIMEOUT"
-#define NAME_NXP_SWP_RD_TAG_OP_TIMEOUT "NXP_SWP_RD_TAG_OP_TIMEOUT"
-#define NAME_NXP_DEFAULT_NFCEE_TIMEOUT "NXP_DEFAULT_NFCEE_TIMEOUT"
-#define NAME_NXP_DEFAULT_NFCEE_DISC_TIMEOUT "NXP_DEFAULT_NFCEE_DISC_TIMEOUT"
-#define NAME_NXP_CE_ROUTE_STRICT_DISABLE "NXP_CE_ROUTE_STRICT_DISABLE"
-#define NAME_NXP_P61_LS_DEFAULT_INTERFACE "NXP_P61_LS_DEFAULT_INTERFACE"
-#define NAME_NXP_P61_JCOP_DEFAULT_INTERFACE "NXP_P61_JCOP_DEFAULT_INTERFACE"
-#define NAME_NXP_JCOPDL_AT_BOOT_ENABLE "NXP_JCOPDL_AT_BOOT_ENABLE"
-#define NAME_NXP_P61_LTSM_DEFAULT_INTERFACE "NXP_P61_LTSM_DEFAULT_INTERFACE"
-#define NAME_NXP_LOADER_SERICE_VERSION "NXP_LOADER_SERVICE_VERSION"
-/* default configuration */
-#define default_storage_location "/data/nfc"
-
-#endif  // _NXP_CONFIG_H
diff --git a/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java b/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
index d92db5a..2c493d3 100755
--- a/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
+++ b/nci/src/com/android/nfc/dhimpl/NativeNfcManager.java
@@ -70,8 +70,8 @@
     public native int doGetLastError();
 
     @Override
-    public void checkFirmware() {
-        doDownload();
+    public boolean checkFirmware() {
+        return doDownload();
     }
 
     private native boolean doInitialize();
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 948d07c..bb1391b 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Jou tablet het \'n skakel deur NFC ontvang:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Jou foon het \'n skakel deur NFC ontvang:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Maak skakel oop"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-leesfout. Probeer weer."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Geen gesteunde program vir hierdie NFC-merker nie"</string>
 </resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index fc08776..b6010ac 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"የእርስዎ ጡባዊ በNFC በኩል አገናኝ ተቀብሏል፦"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"የእርስዎ ስልክ በNFC በኩል አገናኝ ተቀብሏል፦"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"አገናኝ ክፈት"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"የNFC ማንበብ ስህተት። እንደገና ይሞክሩ።"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ለዚህ የNFC መለያ የሚደገፍ መተግበሪያ የለም"</string>
 </resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 44d8e65..8aabc56 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"‏تلقى جهازك اللوحي رابطًا عبر ميزة NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"‏تلقى هاتفك رابطًا عبر ميزة NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"فتح الرابط"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"‏حدث خطأ أثناء قراءة علامة NFC. يُرجى إعادة المحاولة."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"‏ليس هناك تطبيق متوافق مع علامة NFC هذه."</string>
 </resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
deleted file mode 100644
index c087ff3..0000000
--- a/res/values-as/strings.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="78565911793142902">"Nfc সেৱা"</string>
-    <string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string>
-    <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC সক্ষম কৰা হ\'ল৷"</string>
-    <string name="tap_to_beam" msgid="5819197866281059878">"বীম কৰিবলৈ টিপক"</string>
-    <string name="beam_progress" msgid="7453634884807323920">"অন্তৰ্গামী বীম..."</string>
-    <string name="beam_outgoing" msgid="4679536649779123495">"বীম চলি আছে..."</string>
-    <string name="beam_complete" msgid="477026736424637435">"বীম সম্পূৰ্ণ হ\'ল"</string>
-    <string name="beam_failed" msgid="5116241718189888630">"বীম সম্পূৰ্ণ নহ\'ল"</string>
-    <string name="beam_canceled" msgid="5425192751826544741">"বীম বাতিল কৰা হ\'ল"</string>
-    <string name="cancel" msgid="61873902552555096">"বাতিল কৰক"</string>
-    <string name="beam_tap_to_view" msgid="7430394753262448349">"চাবলৈ টিপক"</string>
-    <string name="beam_handover_not_supported" msgid="4083165921751489015">"প্ৰাপকৰ ডিভাইচলৈ বীমৰ যোগে ডাঙৰ ফাইল পঠিয়াব নোৱাৰি৷"</string>
-    <string name="beam_try_again" msgid="3364677301009783455">"ডিভাইচসমূহ আকৌ একেলগ কৰক"</string>
-    <string name="beam_busy" msgid="5253335587620612576">"বৰ্তমান বীম ব্যস্ত আছে৷ পূৰ্বৰ স্থানান্তৰণ কাৰ্য সম্পূৰ্ণ হ\'লে পুনৰ চেষ্টা কৰক৷"</string>
-    <string name="device" msgid="4459621591392478151">"ডিভাইচ"</string>
-    <string name="connecting_peripheral" msgid="1296182660525660935">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> সংযোগ কৰি থকা হৈছে"</string>
-    <string name="connected_peripheral" msgid="20748648543160091">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> সংযোগ কৰা হ\'ল"</string>
-    <string name="connect_peripheral_failed" msgid="7925702596242839275">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> সংযোগ কৰিব পৰা নগ\'ল"</string>
-    <string name="disconnecting_peripheral" msgid="1443699384809097200">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> সংযোগ বিচ্ছিন্ন কৰি থকা হৈছে"</string>
-    <string name="disconnected_peripheral" msgid="4470578100296504366">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> সংযোগ বিচ্ছিন্ন কৰা হ\'ল"</string>
-    <string name="pairing_peripheral" msgid="6983626861540899365">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> যোৰা লগাই থকা হৈছে"</string>
-    <string name="pairing_peripheral_failed" msgid="6087643307743264679">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> যোৰা লগাব পৰা নগ\'ল"</string>
-    <string name="failed_to_enable_bt" msgid="7229153323594758077">"ব্লুটুথ সক্ষম কৰিব পৰা নগ\'ল"</string>
-    <string name="confirm_pairing" msgid="4112568077038265363">"আপুনি ব্লুটুথ ডিভাইচ <xliff:g id="DEVICE_NAME">%1$s</xliff:g>ক যোৰা লগাবলৈ বিচাৰেনে?"</string>
-    <string name="pair_yes" msgid="3525614878559994448">"হয়"</string>
-    <string name="pair_no" msgid="5022308368904055020">"নহয়"</string>
-    <string name="tap_again_to_pay" msgid="5754988005412859897">"<xliff:g id="APP">%1$s</xliff:g>ৰ জৰিয়তে পৰিশোধ কৰিবলৈ আকৌ টিপক"</string>
-    <string name="tap_again_to_complete" msgid="5423640945118279123">"<xliff:g id="APP">%1$s</xliff:g>ৰ জৰিয়তে সম্পূৰ্ণ কৰিবলৈ আকৌ টিপক"</string>
-    <string name="transaction_failure" msgid="7828102078637936513">"<xliff:g id="APP">%1$s</xliff:g>ৰ জৰিয়তে এই লেনদেন সম্পূৰ্ণ কৰিব পৰা নগ\'ল৷"</string>
-    <string name="could_not_use_app" msgid="8137587876138569083">"<xliff:g id="APP">%1$s</xliff:g> ব্যৱহাৰ কৰিব পৰা নগ\'ল৷"</string>
-    <string name="pay_with" msgid="5531545488795798945">"ইয়াৰ জৰিয়তে পৰিশোধ কৰক"</string>
-    <string name="complete_with" msgid="6797459104103012992">"ইয়াৰ জৰিয়তে সম্পূৰ্ণ কৰক"</string>
-    <string name="default_pay_app_removed" msgid="4108250545457437360">"আপোনাৰ পচন্দৰ \'টিপক আৰু পৰিশোধ কৰক\' এপটো আঁতৰোৱা হৈছে৷ অন্য এটা বাছনি কৰিবনে?"</string>
-    <string name="ask_nfc_tap" msgid="2925239870458286340">"সম্পূৰ্ণ কৰিবলৈ অন্য এটা ডিভাইচত টিপক"</string>
-    <string name="wifi_connect" msgid="6250727951843550671">"সংযোগ কৰক"</string>
-    <string name="status_unable_to_connect" msgid="9183908200295307657">"নেটৱৰ্কৰ লগত সংযোগ কৰিব পৰা নগ\'ল"</string>
-    <string name="status_wifi_connected" msgid="5893022897732105739">"সংযোগ কৰা হ’ল"</string>
-    <string name="title_connect_to_network" msgid="2474034615817280146">"নেটৱৰ্কৰ লগত সংযোগ কৰক"</string>
-    <string name="prompt_connect_to_network" msgid="8511683573657516114">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> নেটৱৰ্কৰ লগত সংযোগ কৰিবনে?"</string>
-    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android বীমে NFC সক্ষম কৰিব লাগিব৷ আপুনি ইয়াক সক্ষম কৰিবলৈ বিচাৰেনে?"</string>
-    <string name="android_beam" msgid="1666446406999492763">"Android বীম"</string>
-    <string name="beam_requires_external_storage_permission" msgid="8798337545702206901">"এপ্লিকেশ্বনটোৰ বাহ্যিক সঞ্চয়াগাৰ ব্যৱহাৰ কৰাৰ অনুমতি নাই৷ এই ফাইলটো বীম কৰিবলৈ এয়া প্ৰয়োজন।"</string>
-    <string name="title_confirm_url_open" msgid="8069968913244794478">"লিংক খুলিবনে?"</string>
-    <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"আপোনাৰ টেবলেটে NFC যোগে এই লিংক পাইছে:"</string>
-    <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"আপোনাৰ ফ\'নে NFC যোগে এই লিংক পাইছে:"</string>
-    <string name="action_confirm_url_open" msgid="3458322738812921189">"লিংক খোলক"</string>
-</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index fbe6683..b45fd17 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Planşet NFC ilə link əldə etdi:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefon NFC ilə link əldə etdi:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Linki açın"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC oxuma xətası. Yenidən cəhd edin."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"NFC Teq üçün dəstəklənən tətbiq yoxdur"</string>
 </resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 91c1402..5c1d60c 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablet je primio link preko NFC-a:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefon je primio link preko NFC-a:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Otvori link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Došlo je do greške u čitanju NFC oznake. Probajte ponovo."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nijedna aplikacija ne podržava ovu NFC oznaku"</string>
 </resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 91e20ce..88cf49e 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"На планшэт праз NFC прыйшла спасылка:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"На тэлефон праз NFC прыйшла спасылка:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Адкрыць спасылку"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Памылка чытання NFC. Паўтарыце спробу."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Няма праграм, якія падтрымліваюцца для гэтага цэтліка NFC"</string>
 </resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 2fa13e3..cc29d6c 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Таблетът ви получи връзка през КБП:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Телефонът ви получи връзка през КБП:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Отваряне на връзката"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Грешка при четенето на маркера за КБП. Опитайте отново."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Няма приложение, което поддържа този маркер за КБП"</string>
 </resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 0c4c8ca..3e37644 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"আপনার ট্যাবলেট NFC এর মাধ্যমে একটি লিঙ্ক পেয়েছে:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"আপনার ফোন NFC এর মাধ্যমে একটি লিঙ্ক পেয়েছে:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"লিঙ্ক খুলুন"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC পড়তে সমস্যা হয়েছে। আবার চেষ্টা করুন।"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"এই NFC ট্যাগ ব্যবহার করার মতো কোনও অ্যাপ্লিকেশন নেই"</string>
 </resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 99b9329..4fa3c8d 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Vaš tablet je primio link preko NFC-a:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Vaš telefon je primio link preko NFC-a:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Otvori link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Greška prilikom očitavanja NFC-a. Pokušajte ponovo."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nema podržane aplikacije za ovu NFC oznaku"</string>
 </resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index deb798d..549a441 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Has rebut un enllaç a la tauleta per NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Has rebut un enllaç al telèfon per NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Obre l\'enllaç"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Hi ha hagut un error en llegir l\'etiqueta NFC. Torna-ho a provar."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"No hi ha cap aplicació compatible amb aquesta etiqueta NFC"</string>
 </resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 9339ceb..62b254d 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablet obdržel odkaz přes NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefon obdržel odkaz přes NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Otevřít odkaz"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Při čtení NFC došlo k chybě. Zkuste to znovu."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Pro tuto značku NFC není k dispozici žádná podporovaná aplikace"</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index ca327f2..ac8bf24 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Du har modtaget et link på din tablet via NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Du har modtaget et link på din telefon via NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Åbn link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-læsefejl. Prøv igen."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Der er ingen understøttede apps til dette NFC-tag"</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index ae983a7..8dc769c 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Du hast auf dem Tablet via NFC einen Link erhalten:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Du hast auf dem Smartphone via NFC einen Link erhalten:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Link öffnen"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-Lesefehler. Bitte versuch es noch einmal."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Keine unterstützte Anwendung für dieses NFC-Tag"</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 377e1a4..ccdc0dd 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Το tablet έλαβε έναν σύνδεσμο μέσω NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Το τηλέφωνό σας έλαβε έναν σύνδεσμο μέσω NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Άνοιγμα συνδέσμου"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Σφάλμα ανάγνωσης NFC. Δοκιμάστε ξανά."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Δεν υπάρχει υποστηριζόμενη εφαρμογή για αυτήν την ετικέτα NFC"</string>
 </resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 77b59f5..7ee2efe 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Your tablet received a link through NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Your phone received a link through NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Open link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC read error. Try again."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"No supported application for this NFC Tag"</string>
 </resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 77b59f5..7ee2efe 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Your tablet received a link through NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Your phone received a link through NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Open link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC read error. Try again."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"No supported application for this NFC Tag"</string>
 </resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 77b59f5..7ee2efe 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Your tablet received a link through NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Your phone received a link through NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Open link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC read error. Try again."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"No supported application for this NFC Tag"</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 656b359..c5d70b4 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tu tablet recibió un vínculo mediante NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Tu teléfono recibió un vínculo mediante NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Abrir vínculo"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Error de lectura de NFC. Vuelve a intentarlo."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"No hay apps compatibles con esta etiqueta NFC"</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 15b1ab7..f563e5d 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Has recibido un enlace en tu tablet por NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Has recibido un enlace en tu teléfono por NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Abrir enlace"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Se ha producido un error de lectura de NFC. Inténtalo de nuevo."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"No hay ninguna aplicación compatible con esta etiqueta NFC"</string>
 </resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index cab3196..a2442d0 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Teie tahvelarvuti sai lingi NFC kaudu:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Teie telefon sai lingi NFC kaudu:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Ava link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-kiibi lugemise viga. Proovige uuesti."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Selle NFC-kiibi puhul toetatud rakendus puudub"</string>
 </resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 6c10cec..aa0c259 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Esteka bat jaso duzu tabletan NFC bidez:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Esteka bat jaso duzu telefonoan NFC bidez:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Ireki esteka"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Errore bat gertatu da NFC etiketa irakurtzean. Saiatu berriro."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Ez dago NFC etiketa hau onartzen duen aplikaziorik"</string>
 </resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a56a293..32c3729 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"‏رایانه لوحی‌تان پیوندی ازطریق NFC دریافت کرد:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"‏تلفنتان پیوندی ازطریق NFC دریافت کرد:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"باز کردن پیوند"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"‏خطای خواندن NFC. دوباره امتحان کنید."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"‏برنامه پشتیبانی‌شده‌ای برای نشان NFC وجود ندارد"</string>
 </resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index b747c10..99750da 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablettisi vastaanotti linkin NFC:n kautta:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Puhelimesi vastaanotti linkin NFC:n kautta:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Avaa linkki"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-lukuvirhe. Yritä uudelleen."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Ei NFC-tagia tukevia sovelluksia"</string>
 </resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 096d3f0..6833808 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Votre tablette a reçu un lien par NFC :"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Votre téléphone a reçu un lien par NFC :"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Ouvrir le lien"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Erreur de lecture NFC. Réessayez."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Aucune application prise en charge pour cette balise NFC"</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 42e499e..a61a322 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Votre tablette a reçu un lien via NFC :"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Votre téléphone a reçu un lien via NFC :"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Ouvrir le lien"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Erreur de lecture NFC. Veuillez réessayer."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Aucune application compatible avec ce tag NFC"</string>
 </resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index f69fbd3..d5bcabe 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"A túa tableta recibiu unha ligazón mediante NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"O teu teléfono recibiu unha ligazón mediante NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Abrir ligazón"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Produciuse un erro de lectura da etiqueta NFC. Téntao de novo."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Non hai ningunha aplicación compatible para esta etiqueta NFC"</string>
 </resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 7f6f9d4..c9c83dc 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"તમારા ટૅબ્લેટને NFC મારફતે એક લિંક પ્રાપ્ત થઈ છે:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"તમારા ફોનને NFC મારફતે એક લિંક પ્રાપ્ત થઈ છે:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"લિંક ખોલો"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC વાંચનમાં ભૂલ. ફરી પ્રયાસ કરો."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"આ NFC ટૅગ માટે કોઈ સહાયક ઍપ્લિકેશન નથી"</string>
 </resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index e33da37..2260a82 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"आपके टैबलेट पर NFC के ज़रिए एक लिंक आया है:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"आपके फ़ोन पर NFC के ज़रिए एक लिंक आया है:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"लिंक को खोलें"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"एनएफ़सी की जानकारी नहीं पता की जा सकी. कृपया फिर से कोशिश करें."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ऐसा कोई ऐप्लिकेशन मौजूद नहीं है, जिससे यह एनएफ़सी टैग इस्तेमाल किया जा सके"</string>
 </resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index ce7486d..9944667 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Vaš je tablet primio vezu NFC-om:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Vaš je telefon primio vezu NFC-om:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Otvori vezu"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Pogreška pri čitanju NFC-a. Pokušajte ponovo."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nema podržane aplikacije za ovu oznaku NFC"</string>
 </resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 60a3f39..0b73bce 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Táblagépe linket kapott NFC-n keresztül:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefonja linket kapott NFC-n keresztül:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Link megnyitása"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-olvasási hiba. Próbálja újra."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nem található támogatott alkalmazás ehhez az NFC-címkéhez"</string>
 </resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 7e731f9..da711d1 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Ձեր պլանշետին ուղարկվել է հղում NFC-ի միջոցով:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Ձեր հեռախոսին ուղարկվել է հղում NFC-ի միջոցով:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Բացել հղումը"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Չհաջողվեց կարդալ NFC պիտակը։ Նորից փորձեք:"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Այս NFC պիտակի համար աջակցվող հավելված չկա"</string>
 </resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index d70fb19..aec5dec 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablet Anda menerima link melalui NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Ponsel Anda menerima link melalui NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Buka link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Pembacaan NFC error. Coba lagi."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Aplikasi tidak didukung untuk Tag NFC ini"</string>
 </resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 2433db3..e00fba7 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Spjaldtölvan þín fékk tengil um NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Síminn þinn fékk tengil um NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Opna tengil"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Villa í lestri NFC-merkis. Reyndu aftur."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Ekkert stutt forrit fyrir þetta NFC-merki"</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 365a1d4..b1730e2 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Hai ricevuto un link tramite NFC sul tablet:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Hai ricevuto un link tramite NFC sul telefono:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Apri il link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Errore durante la lettura del tag NFC. Riprova."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nessuna app supportata per questo tag NFC"</string>
 </resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index f879191..244841f 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"‏הטאבלט קיבל קישור דרך NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"‏הטלפון קיבל קישור דרך NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"לפתיחת הקישור"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"‏אירעה שגיאת קריאה של NFC. יש לנסות שוב."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"‏אין אפליקציה תומכת לתג NFC זה"</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index ef94fb8..e4713ea 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"タブレットで NFC を使用してリンクを受信しました。"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"スマートフォンで NFC を使用してリンクを受信しました。"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"リンクを開く"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC 読み取りエラーが発生しました。もう一度お試しください。"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"この NFC タグをサポートしているアプリはありません"</string>
 </resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 782ebb9..1a399d9 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"თქვენმა ტაბლეტმა მიიღო ბმული NFC-ს მეშვეობით:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"თქვენმა ტელეფონმა მიიღო ბმული NFC-ს მეშვეობით:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"ბმულის გახსნა"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-ს წაკითხვის შეცდომა. ცადეთ ისევ."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ამ NFC ტეგისთვის არცერთი მხარდაჭერილი აპლიკაცია არ მოიძებნა"</string>
 </resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 3e5e1b1..01a414a 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Планшетіңіз NFC арқылы сілтеме алды:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Телефоныңыз NFC арқылы сілтеме алды:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Сілтемені ашу"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC қатесі шықты. Қайталап көріңіз."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Осы NFC картасы үшін бірде-бір қолдау көрсетілетін қолданба жоқ"</string>
 </resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 2336578..6bed2c0 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"ថេប្លេតរបស់អ្នកទទួលបានតំណមួយតាមរយៈ NFC៖"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"ទូរសព្ទរបស់អ្នកទទួលបានតំណមួយតាមរយៈ NFC៖"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"បើក​តំណ"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"មាន​បញ្ហា​ក្នុងការអាន NFC ។ សូមព្យាយាមម្ដងទៀត។"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"មិន​មាន​កម្មវិធី​ដែលអាចប្រើ​ស្លាក NFC នេះទេ"</string>
 </resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index bffc7b4..dcd6e28 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"ನಿಮ್ಮ ಟ್ಯಾಬ್ಲೆಟ್ NFC ಮೂಲಕ ಲಿಂಕ್ ಸ್ವೀಕರಿಸಿದೆ:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"ನಿಮ್ಮ ಫೋನ್ NFC ಮೂಲಕ ಲಿಂಕ್ ಸ್ವೀಕರಿಸಿದೆ:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"ಲಿಂಕ್ ತೆರೆಯಿರಿ"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC ಓದುವಲ್ಲಿ ದೋಷ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ಈ NFC ಟ್ಯಾಗ್‌ಗೆ ಯಾವುದೇ ಆ್ಯಪ್‌ ಬೆಂಬಲಿಸುವುದಿಲ್ಲ"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 9616f00..91c4458 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"태블릿에서 NFC를 통해 링크 수신:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"휴대전화에서 NFC를 통해 링크 수신:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"링크 열기"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC 읽기 오류입니다. 다시 시도하세요."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"이 NFC 태그에 지원되는 애플리케이션이 없습니다."</string>
 </resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 7b2b8ca..c56a965 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Планшетиңизге NFC аркылуу шилтеме келди:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Телефонуңузга NFC аркылуу шилтеме келди:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Шилтемени ачуу"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC\'ни окууда ката кетти. Кайра аракет кылыңыз."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Бул NFC энбелгиси үчүн колдоого алынган колдонмо жок"</string>
 </resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index c31d66e..560062e 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"ແທັບເລັດຂອງທ່ານໄດ້ຮັບລິ້ງຜ່ານທາງ NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"ໂທລະສັບຂອງທ່ານໄດ້ຮັບລິ້ງຜ່ານທາງ NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"ເປີດລິ້ງ"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"ການອ່ານ NFC ຜິດພາດ. ກະລຸນາລອງໃໝ່."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ບໍ່ມີແອັບພລິເຄຊັນທີ່ຮອງຮັບແທັກ NFC ນີ້"</string>
 </resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index e95a240..b5b01f7 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Planšetiniame kompiuteryje gauta nuoroda naudojant ALR:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefone gauta nuoroda naudojant ALR:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Atidaryti nuorodą"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"ALR nuskaitymo klaida. Bandykite dar kartą."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nėra šią ALR žymą palaikančių programų"</string>
 </resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 95fe35c..25b17e2 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Jūsu planšetdatorā tika saņemta saite, izmantojot NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Jūsu tālrunī tika saņemta saite, izmantojot NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Atvērt saiti"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC lasīšanas kļūda. Mēģiniet vēlreiz."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Šī NFC atzīme netiek atbalstīta nevienā lietojumprogrammā"</string>
 </resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 0c7d6d2..ac04453 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Вашиот таблет доби линк преку NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Вашиот телефон доби линк преку NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Отвори ја врската"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Грешка при читањето на NFC. Обидете се повторно."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Нема поддржана апликација за оваа ознака за NFC"</string>
 </resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f119c2f..be4807e 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"നിങ്ങളുടെ ടാബ്‌ലെറ്റിന് NFC വഴി ഒരു ലിങ്ക് ലഭിച്ചു:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"നിങ്ങളുടെ ഫോണിന് NFC വഴി ഒരു ലിങ്ക് ലഭിച്ചു:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"ലിങ്ക് തുറക്കുക"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC റീഡ് ചെയ്യുന്നതിൽ പിശക്. വീണ്ടും ശ്രമിക്കുക."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ഈ NFC ടാഗിനെ പിന്തുണയ്ക്കുന്ന ആപ്പുകളൊന്നുമില്ല"</string>
 </resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 728af47..2c6e085 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Таны таблет NFC-р холбоос авсан байна:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Таны утас NFC-р холбоос авсан байна:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Холбоосыг нээх"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-г уншихад алдаа гарлаа. Дахин оролдоно уу."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Энэ NFC Шошгыг зохицуулах боломжтой дэмжигдсэн апп алга"</string>
 </resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index de500db..d8fc5cb 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"तुमच्या टॅबलेटला NFC वरून एक लिंक मिळाली आहे:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"तुमच्या फोनला NFC वरून एक लिंक मिळाली आहे:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"लिंक उघडा"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC वाचण्यात एरर आली. पुन्हा प्रयत्न करा."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"या NFC टॅग साठी कोणतेही सपोर्ट करणारे अॅप्लिकेशन नाही"</string>
 </resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 643180a..eb873c4 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablet anda menerima pautan melalui NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefon anda menerima pautan melalui NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Buka pautan"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Ralat baca NFC. Cuba lagi."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Tiada aplikasi yang disokong untuk Teg NFC ini"</string>
 </resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index dcfa8fe..f95f865 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"သင့်တက်ဘလက်သည် NFC မှတစ်ဆင့် လင့်ခ်တစ်ခု လက်ခံရရှိထားပါသည်-"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"သင့်ဖုန်းသည် NFC မှတစ်ဆင့် လင့်ခ်တစ်ခု လက်ခံရရှိထားပါသည်-"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"လင့်ခ်ဖွင့်ရန်"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC ဖတ်ရှုမှု အမှားရှိနေသည်။ ထပ်စမ်းကြည့်ပါ။"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ဤ \'NFC တဂ်\' အတွက် ပံ့ပိုးထားသော အပလီကေးရှင်း မရှိပါ"</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index dbfc2d5..5a4f37b 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Nettbrettet ditt mottok en link via NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefonen din mottok en link via NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Åpne link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-lesefeil. Prøv på nytt."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Ingen apper støttes for denne NFC-brikken"</string>
 </resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 4d34571..d841a49 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"तपाईंको ट्याब्लेटमा NFC मार्फत एउटा लिंक आयो:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"तपाईंको फोनमा NFC मार्फत एउटा लिंक आयो:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"लिंक खोल्नुहोस्"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC पढ्ने क्रममा त्रुटि भयो। फेरि प्रयास गर्नुहोस्‌।"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"यो NFC ट्यागको कुनै पनि समर्थित अनुप्रयोग छैन"</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index f8aedc9..ce59f1d 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Je tablet heeft een link ontvangen via NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Je telefoon heeft een link ontvangen via NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Link openen"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Fout bij lezen NFC. Probeer het opnieuw."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Geen ondersteunde app voor deze NFC-tag"</string>
 </resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
deleted file mode 100644
index baaaf6b..0000000
--- a/res/values-or/strings.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_name" msgid="78565911793142902">"NFC ସେବା"</string>
-    <string name="nfcUserLabel" msgid="7708535817084357357">"NFC"</string>
-    <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC ସକ୍ଷମିତ।"</string>
-    <string name="tap_to_beam" msgid="5819197866281059878">"ବିମ୍‌ କରିବା ପାଇଁ ଟାପ୍‌ କରନ୍ତୁ"</string>
-    <string name="beam_progress" msgid="7453634884807323920">"ବିମ୍‌ ଆସୁଛି..."</string>
-    <string name="beam_outgoing" msgid="4679536649779123495">"ବିମ୍‌ କରା ହେଉଛି..."</string>
-    <string name="beam_complete" msgid="477026736424637435">"ବିମ୍‌ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଛି"</string>
-    <string name="beam_failed" msgid="5116241718189888630">"ବିମ୍‌ ସମ୍ପୂର୍ଣ୍ଣ ହେଲା ନାହିଁ"</string>
-    <string name="beam_canceled" msgid="5425192751826544741">"ବିମ୍‌ କ୍ୟାନ୍ସଲ୍‌ ହୋଇଛି"</string>
-    <string name="cancel" msgid="61873902552555096">"କ୍ୟାନ୍ସଲ୍‍"</string>
-    <string name="beam_tap_to_view" msgid="7430394753262448349">"ଦେଖିବା ପାଇଁ ଟାପ୍‌ କରନ୍ତୁ"</string>
-    <string name="beam_handover_not_supported" msgid="4083165921751489015">"ପ୍ରାପ୍ତକର୍ତ୍ତାଙ୍କ ଡିଭାଇସ୍‌, ବିମ୍‌ ମାଧ୍ୟମରେ ବଡ଼ ସାଇଜ୍‌ର ଫାଇଲ୍ ଟ୍ରାନ୍ସଫର‌୍‌ ସପୋର୍ଟ କରେନାହିଁ।"</string>
-    <string name="beam_try_again" msgid="3364677301009783455">"ଡିଭାଇସ୍‌ଗୁଡ଼ିକୁ ପୁଣି ଏକାଠି କରନ୍ତୁ"</string>
-    <string name="beam_busy" msgid="5253335587620612576">"ବିମ୍‌ ବର୍ତ୍ତମାନ ଅନ୍ୟ କାମରେ ବ୍ୟବହୃତ ହେଉଛି। ପୂର୍ବବର୍ତ୍ତୀ ଟ୍ରାନ୍ସଫର‌୍‌ ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଗଲେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
-    <string name="device" msgid="4459621591392478151">"ଡିଭାଇସ୍"</string>
-    <string name="connecting_peripheral" msgid="1296182660525660935">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ କନେକ୍ଟ କରାଯାଉଛି"</string>
-    <string name="connected_peripheral" msgid="20748648543160091">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ କନେକ୍ଟ କରାଯାଇଛି"</string>
-    <string name="connect_peripheral_failed" msgid="7925702596242839275">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ସହ କନେକ୍ଟ କରିହେଲା ନାହିଁ"</string>
-    <string name="disconnecting_peripheral" msgid="1443699384809097200">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ଡିସ୍‌କନେକ୍ଟ କରାଯାଉଛି"</string>
-    <string name="disconnected_peripheral" msgid="4470578100296504366">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ଡିସ୍‌କନେକ୍ଟ କରାଯାଇଛି"</string>
-    <string name="pairing_peripheral" msgid="6983626861540899365">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ଚିହ୍ନାଇ ଦିଆଯାଉଛି"</string>
-    <string name="pairing_peripheral_failed" msgid="6087643307743264679">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ଚିହ୍ନାଇ ହେଲା ନାହିଁ"</string>
-    <string name="failed_to_enable_bt" msgid="7229153323594758077">"ବ୍ଲୁ-ଟୂଥ୍‌ ସକ୍ଷମ କରିହେଲା ନାହିଁ"</string>
-    <string name="confirm_pairing" msgid="4112568077038265363">"ଆପଣ କ’ଣ ପ୍ରକୃତରେ ନିଜର <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ବ୍ଲୁ-ଟୂଥ୍‌ ଡିଭାଇସ୍‌କୁ ଚିହ୍ନାଇବାକୁ ଚାହୁଁଛନ୍ତି?"</string>
-    <string name="pair_yes" msgid="3525614878559994448">"ହଁ"</string>
-    <string name="pair_no" msgid="5022308368904055020">"ନା"</string>
-    <string name="tap_again_to_pay" msgid="5754988005412859897">"<xliff:g id="APP">%1$s</xliff:g> ସହ ପେମେଣ୍ଟ କରିବା ପାଇଁ ପୁଣି ଟାପ୍‌ କରନ୍ତୁ"</string>
-    <string name="tap_again_to_complete" msgid="5423640945118279123">"<xliff:g id="APP">%1$s</xliff:g> ସହ ସମ୍ପୂର୍ଣ୍ଣ କରିବା ପାଇଁ ପୁଣି ଟାପ୍‌ କରନ୍ତୁ"</string>
-    <string name="transaction_failure" msgid="7828102078637936513">"<xliff:g id="APP">%1$s</xliff:g> ସହ ଏହି ଟ୍ରାନଜେକଶନ୍‌ ସମ୍ପୂର୍ଣ୍ଣ କରିହେଲା ନାହିଁ।"</string>
-    <string name="could_not_use_app" msgid="8137587876138569083">"<xliff:g id="APP">%1$s</xliff:g> ବ୍ୟବହାର କରିହେଲା ନାହିଁ।"</string>
-    <string name="pay_with" msgid="5531545488795798945">"ଏହା ସହ ପେମେଣ୍ଟ କରନ୍ତୁ"</string>
-    <string name="complete_with" msgid="6797459104103012992">"ଏହା ଦ୍ଵାରା ସମ୍ପୂର୍ଣ୍ଣ କରନ୍ତୁ"</string>
-    <string name="default_pay_app_removed" msgid="4108250545457437360">"\'ଟାପ୍‌ ଆଣ୍ଡ ପେ\' ପାଇଁ ଆପଣଙ୍କ ପସନ୍ଦର ସେବା କାଢ଼ି ଦିଆଯାଇଛି। ଅନ୍ୟ ଗୋଟିଏ ଚୟନ କରିବେ?"</string>
-    <string name="ask_nfc_tap" msgid="2925239870458286340">"ସମ୍ପୂର୍ଣ୍ଣ କରିବା ପାଇଁ ଅନ୍ୟ ଡିଭାଇସ୍‌ରେ ଟାପ୍‌ କରନ୍ତୁ"</string>
-    <string name="wifi_connect" msgid="6250727951843550671">"କନେକ୍ଟ କରନ୍ତୁ"</string>
-    <string name="status_unable_to_connect" msgid="9183908200295307657">"ନେଟ୍‌ୱର୍କକୁ କନେକ୍ଟ କରିହେଲା ନାହିଁ।"</string>
-    <string name="status_wifi_connected" msgid="5893022897732105739">"କନେକ୍ଟ କରାଯାଇଛି"</string>
-    <string name="title_connect_to_network" msgid="2474034615817280146">"ନେଟ୍‌ୱର୍କକୁ କନେକ୍ଟ କରନ୍ତୁ"</string>
-    <string name="prompt_connect_to_network" msgid="8511683573657516114">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ନେଟ୍‌ୱର୍କକୁ କନେକ୍ଟ କରିବେ?"</string>
-    <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android Beam ପାଇଁ NFC ସକ୍ଷମ ଥିବା ଆବଶ୍ୟକ। ଆପଣ ଏହାକୁ ସକ୍ଷମ କରିବେ କି?"</string>
-    <string name="android_beam" msgid="1666446406999492763">"Android ବିମ୍‌"</string>
-    <string name="beam_requires_external_storage_permission" msgid="8798337545702206901">"ଆପ୍ଲୀକେଶନ୍‌କୁ ଏକ୍ସଟର୍ନଲ୍‌ ଷ୍ଟୋରେଜ୍‌ରେ ଲେଖିବାର ଅନୁମତି ନାହିଁ। ଏହି ଫାଇଲ୍‌କୁ ବିମ୍‌ କରିବା ଲାଗି ଏହାର ଅନୁମତି ଆବଶ୍ୟକ"</string>
-    <string name="title_confirm_url_open" msgid="8069968913244794478">"ଲିଙ୍କ ଖୋଲିବେ?"</string>
-    <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"ଆପଣଙ୍କ ଟାବଲେଟ୍‌କୁ NFC ମାଧ୍ୟମରେ ଏକ ଲିଙ୍କ ଆସିଛି:"</string>
-    <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"ଆପଣଙ୍କ ଫୋନ୍‌କୁ NFC ମାଧ୍ୟମରେ ଏକ ଲିଙ୍କ ଆସିଛି:"</string>
-    <string name="action_confirm_url_open" msgid="3458322738812921189">"ଲିଙ୍କ ଖୋଲନ୍ତୁ"</string>
-</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 41e4c24..6364cdc 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"ਤੁਹਾਡੇ ਟੈਬਲੈੱਟ ਨੂੰ NFC ਰਾਹੀਂ ਇੱਕ ਲਿੰਕ ਪ੍ਰਾਪਤ ਹੋਇਆ:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"ਤੁਹਾਡੇ ਫ਼ੋਨ ਨੂੰ NFC ਰਾਹੀਂ ਇੱਕ ਲਿੰਕ ਪ੍ਰਾਪਤ ਹੋਇਆ:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"ਲਿੰਕ ਖੋਲ੍ਹੋ"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC ਪੜ੍ਹਨ ਵਿੱਚ ਗੜਬੜ ਹੋਈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ਇਸ NFC ਟੈਗ ਲਈ ਕੋਈ ਸਮਰਥਿਤ ਐਪਲੀਕੇਸ਼ਨ ਨਹੀਂ ਹੈ"</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index e58a66f..ad7ff4f 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Na tablet został przesłany link przez NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Na telefon został przesłany link przez NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Otwórz link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Błąd odczytu tagu NFC. Spróbuj ponownie."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Brak obsługiwanej aplikacji dla tego tagu NFC"</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 02cb195..1110429 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"O seu tablet recebeu um link através de NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"O seu telemóvel recebeu um link através de NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Abrir link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Erro de leitura de NFC. Tente novamente."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Não existe nenhuma aplicação suportada para esta etiqueta NFC."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4fe91ed..bdb3566 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Seu tablet recebeu um link por NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Seu smartphone recebeu um link por NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Abrir link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Erro na leitura da NFC. Tente novamente."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nenhum aplicativo compatível com esta etiqueta NFC"</string>
 </resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 6117230..9f3e3df 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -43,8 +43,10 @@
     <string name="beam_requires_nfc_enabled" msgid="2800366967218600534">"Android Beam necesită activarea NFC. Activați?"</string>
     <string name="android_beam" msgid="1666446406999492763">"Android Beam"</string>
     <string name="beam_requires_external_storage_permission" msgid="8798337545702206901">"Aplicația nu are permisiune de stocare externă. Aceasta este necesară pentru transmiterea fișierului."</string>
-    <string name="title_confirm_url_open" msgid="8069968913244794478">"Deschideți linkul?"</string>
+    <string name="title_confirm_url_open" msgid="8069968913244794478">"Accesați linkul?"</string>
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tableta dvs. a primit un link prin NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefonul dvs. a primit un link prin NFC:"</string>
-    <string name="action_confirm_url_open" msgid="3458322738812921189">"Deschideți linkul"</string>
+    <string name="action_confirm_url_open" msgid="3458322738812921189">"Accesați linkul"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Eroare de citire NFC. Încercați din nou."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nu există aplicații acceptate pentru această etichetă NFC"</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 7e51b45..47f3314 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"На ваш планшет по NFC поступила ссылка:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"На ваш телефон по NFC поступила ссылка:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Открыть"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Ошибка чтения NFC-метки. Повторите попытку."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Для этой NFC-метки нет поддерживаемых приложений"</string>
 </resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 2b2fad5..5b0f6be 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"ඔබගේ ටැබ්ලට් පරිගණකයට NFC හරහා සබැඳියක් ලැබුණි:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"ඔබගේ දුරකථනයට NFC හරහා සබැඳියක් ලැබුණි:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"සබැඳිය විවෘත කරන්න"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC කියවීමේ දෝෂයකි. නැවත උත්සාහ කරන්න."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"මෙම NFC ටැගය සඳහා සහාය දක්වන යෙදුම් නැත"</string>
 </resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index e1a0f3b..98dbbd1 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablet dostal odkaz cez NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefón dostal odkaz cez NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Otvoriť odkaz"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Chyba čítania značky NFC. Skúste to znova."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Pre túto značku NFC nie je k dispozícii žiadna podporovaná aplikácia"</string>
 </resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index e71bf27..835b313 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tablični računalnik je prejel povezavo prek vmesnika NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefon je prejel povezavo prek vmesnika NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Odpri povezavo"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Napaka pri branju oznake NFC. Poskusite znova."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Za to oznako NFC ni podprta nobena aplikacija"</string>
 </resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 1f74259..9e01855 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tableti yt mori një lidhje nëpërmjet NFC-së:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefoni yt mori një lidhje nëpërmjet NFC-së:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Hap lidhjen"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Gabim leximi për NFC-në. Provo përsëri."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Nuk ka asnjë aplikacion të mbështetur për këtë etiketë NFC"</string>
 </resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index f987d88..80ee44e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Таблет је примио линк преко NFC-а:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Телефон је примио линк преко NFC-а:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Отвори линк"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Дошло је до грешке у читању NFC ознаке. Пробајте поново."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Ниједна апликација не подржава ову NFC ознаку"</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index c71bd54..7199876 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"En länk har skickats till surfplattan via NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"En länk har skickats till mobilen via NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Öppna länk"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC-läsfel. Försök igen."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Ingen app har stöd för den här NFC-etiketten"</string>
 </resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 4e9a2fb..6e81c15 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Kompyuta kibao yako imepokea kiungo kupitia NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Simu yako imepokea kiungo kupitia NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Fungua kiungo"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Hitilafu ya kusoma NFC. Jaribu tena."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Hakuna programu inayotumika katika Tagi hii ya NFC"</string>
 </resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 1355ba8..d524946 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"NFC வழியாக உங்கள் டேப்லெட்டுக்கு, ஒரு இணைப்பு வந்துள்ளது:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"NFC வழியாக உங்கள் ஃபோனுக்கு, ஒரு இணைப்பு வந்துள்ளது:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"இணைப்பைத் திற"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC குறியைப் படிக்க இயலவில்லை. பிறகு முயலவும்."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"இந்த NFC குறிக்கு ஏற்ற ஆப்ஸ் இல்லை"</string>
 </resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index e38518e..7b641e3 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"మీ టాబ్లెట్ NFC ద్వారా లింక్‌ని పొందింది:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"మీ ఫోన్ NFC ద్వారా లింక్‌ని పొందింది:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"లింక్‌ని తెరవండి"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC చదవడంలో ఎర్రర్. మళ్లీ ప్రయత్నించండి."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"NFC ట్యాగ్‌కి మద్దతు ఇచ్చే అప్లికేషన్ ఏదీ లేదు"</string>
 </resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index e17af86..602ad40 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"แท็บเล็ตได้รับลิงก์ทาง NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"โทรศัพท์ได้รับลิงก์ทาง NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"เปิดลิงก์"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"เกิดข้อผิดพลาดในการอ่าน NFC โปรดลองอีกครั้ง"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"ไม่มีแอปพลิเคชันที่รองรับแท็ก NFC นี้"</string>
 </resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index ce706eb..1ac4f3f 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Nakatanggap ng link ang iyong tablet sa pamamagitan ng NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Nakatanggap ng link ang iyong telepono sa pamamagitan ng NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Buksan ang link"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Error sa pagbasa ng NFC. Subukang muli."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Walang sinusuportahang application para sa Tag ng NFC na ito"</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index e4cfdca..afad452 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Tabletiniz NFC üzerinden bir bağlantı aldı:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefonunuz NFC üzerinden bir bağlantı aldı:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Bağlantıyı aç"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC okuma hatası. Tekrar deneyin."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Bu NFC Etiketi için desteklenen uygulama yok"</string>
 </resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 16d554b..ec09179 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"На планшет надіслано посилання через зв’язок малого радіуса дії (NFC):"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"На телефон надіслано посилання через зв’язок малого радіуса дії (NFC):"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Відкрити посилання"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Помилка зчитування NFC-мітки. Повторіть спробу."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Немає підтримуваного додатка для цієї NFC-мітки"</string>
 </resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 15064ae..e5fce14 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"‏NFC کے ذریعے آپ کے ٹیبلیٹ کو ایک لنک موصول ہوا ہے:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"‏NFC کے ذریعے آپ کے فون کو ایک لنک موصول ہوا ہے:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"لنک کھولیں"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"‏NFC پڑھنے میں خرابی۔ دوبارہ کوشش کریں۔"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"‏اس NFC ٹیگ کے لیے کوئی تعاون یافتہ ایپلیکیشن نہیں ہے"</string>
 </resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index b5abd10..d9232a9 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Planshetingizga NFC orqali havola keldi:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Telefoningizga NFC orqali havola keldi:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Havolani ochish"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC yorliqni o‘qishda xato. Qaytadan urining."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Mazkur NFC yorliq bilan ishlaydigan hech qanday ilova topilmadi"</string>
 </resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 2b3733d..6adb1e8 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Máy tính bảng của bạn đã nhận được một liên kết thông qua NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Điện thoại của bạn đã nhận được một liên kết thông qua NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Mở liên kết"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Lỗi đọc thẻ NFC. Hãy thử lại."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Không có ứng dụng nào hỗ trợ thẻ NFC này"</string>
 </resources>
diff --git a/res/values-watch/drawables.xml b/res/values-watch/drawables.xml
new file mode 100644
index 0000000..3cb941f
--- /dev/null
+++ b/res/values-watch/drawables.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <item name="icon" type="drawable">@*android:drawable/sym_def_app_icon</item>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 8e1fb70..df7bb7a 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"您的平板电脑已通过 NFC 收到一个链接:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"您的手机已通过 NFC 收到一个链接:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"打开链接"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC 读取错误,请重试。"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"没有应用支持此 NFC 标签"</string>
 </resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 3f98aeb..8a17ce3 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"您的平板電腦已透過 NFC 收到一個連結:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"您的手機已透過 NFC 收到一個連結:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"開啟連結"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC 讀取錯誤,請再試一次。"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"沒有支援此 NFC 標籤的應用程式"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 21a6036..70e2da8 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"你的平板電腦已透過 NFC 收到 1 個連結:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"你的手機已透過 NFC 收到 1 個連結:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"開啟連結"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"NFC 讀取錯誤,請再試一次。"</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"找不到支援這個 NFC 標記的應用程式"</string>
 </resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 8005b20..d7598e6 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -47,4 +47,6 @@
     <string name="summary_confirm_url_open" product="tablet" msgid="3353502750736192055">"Ithebhulethi yakho ithole isixhumanisi nge-NFC:"</string>
     <string name="summary_confirm_url_open" product="default" msgid="1246398412196449226">"Ifoni yakho ithole isixhumanisi nge-NFC:"</string>
     <string name="action_confirm_url_open" msgid="3458322738812921189">"Vula isixhumanisi"</string>
+    <string name="tag_read_error" msgid="2485274498885877547">"Iphutha lokufunda le-NFC. Zama futhi."</string>
+    <string name="tag_dispatch_failed" msgid="3562984995049738400">"Uhlelo lokusebenza olungasekelwa lale thegi ye-NFC Tag"</string>
 </resources>
diff --git a/res/values/config.xml b/res/values/config.xml
index c6654dd..c0d1954 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -2,4 +2,5 @@
 <resources>
     <string name="bluetooth_package" translatable="false">com.android.bluetooth</string>
     <bool name="enable_nfc_url_open_dialog">false</bool>
+    <bool name="enable_auto_play">true</bool>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9d812d9..e46ba4c 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -93,4 +93,8 @@
     <!-- Label for the button which causes the URL to be opened -->
     <string name="action_confirm_url_open">Open link</string>
 
+    <!-- Toast string informing the user that NFC tag read failure occurs -->
+    <string name="tag_read_error">NFC read error. Try again.</string>
+    <!-- Toast string informing the user that no application can handle the NFC tag -->
+    <string name="tag_dispatch_failed">No supported application for this NFC Tag</string>
 </resources>
diff --git a/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java b/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java
index e81f076..eb26198 100644
--- a/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java
+++ b/src/com/android/nfc/ConfirmConnectToWifiNetworkActivity.java
@@ -10,9 +10,9 @@
 import android.content.IntentFilter;
 import android.net.wifi.WifiConfiguration;
 import android.net.wifi.WifiManager;
+import android.os.Binder;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.Process;
 import android.view.View;
 import android.widget.Toast;
 
@@ -88,7 +88,7 @@
     private boolean isChangeWifiStateGranted() {
         AppOpsManager appOps = (AppOpsManager) getSystemService(Context.APP_OPS_SERVICE);
         int modeChangeWifiState = appOps.checkOpNoThrow(AppOpsManager.OP_CHANGE_WIFI_STATE,
-                                                        Process.NFC_UID, getPackageName());
+                                                        Binder.getCallingUid(), getPackageName());
         return modeChangeWifiState == AppOpsManager.MODE_ALLOWED;
     }
 
@@ -125,7 +125,7 @@
 
     @Override
     public void onDismiss(DialogInterface dialog) {
-        if (!mEnableWifiInProgress) {
+        if (!mEnableWifiInProgress && !isChangingConfigurations()) {
             finish();
         }
     }
diff --git a/src/com/android/nfc/DeviceHost.java b/src/com/android/nfc/DeviceHost.java
index 3601d9a..5469fbf 100644
--- a/src/com/android/nfc/DeviceHost.java
+++ b/src/com/android/nfc/DeviceHost.java
@@ -172,7 +172,7 @@
      * <p>This is called from a thread
      * that may block for long periods of time during the update process.
      */
-    public void checkFirmware();
+    public boolean checkFirmware();
 
     public boolean initialize();
 
diff --git a/src/com/android/nfc/NfcDispatcher.java b/src/com/android/nfc/NfcDispatcher.java
index f9ab131..9003636 100644
--- a/src/com/android/nfc/NfcDispatcher.java
+++ b/src/com/android/nfc/NfcDispatcher.java
@@ -223,6 +223,11 @@
             return intent;
         }
 
+        public boolean hasIntentReceiver() {
+            return packageManager.queryIntentActivitiesAsUser(intent, 0,
+                    ActivityManager.getCurrentUser()).size() > 0;
+        }
+
         public boolean isWebIntent() {
             return ndefUri != null && ndefUri.normalizeScheme().getScheme() != null &&
                 ndefUri.normalizeScheme().getScheme().startsWith("http");
@@ -575,7 +580,7 @@
         // regular launch
         dispatch.intent.setPackage(null);
 
-        if (dispatch.isWebIntent()) {
+        if (dispatch.isWebIntent() && dispatch.hasIntentReceiver()) {
             if (DBG) Log.i(TAG, "matched Web link - prompting user");
             showWebLinkConfirmation(dispatch);
             return true;
diff --git a/src/com/android/nfc/NfcService.java b/src/com/android/nfc/NfcService.java
index feabd30..8649f10 100644
--- a/src/com/android/nfc/NfcService.java
+++ b/src/com/android/nfc/NfcService.java
@@ -79,6 +79,7 @@
 import android.service.vr.IVrManager;
 import android.service.vr.IVrStateCallbacks;
 import android.util.Log;
+import android.widget.Toast;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.nfc.DeviceHost.DeviceHostListener;
@@ -91,7 +92,10 @@
 import com.android.nfc.dhimpl.NativeNfcManager;
 import com.android.nfc.handover.HandoverDataParser;
 
+import java.io.File;
 import java.io.FileDescriptor;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
@@ -102,6 +106,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.Scanner;
 
 
 public class NfcService implements DeviceHostListener {
@@ -123,6 +128,8 @@
     static final String TRON_NFC_P2P = "nfc_p2p";
     static final String TRON_NFC_TAG = "nfc_tag";
 
+    static final String NATIVE_LOG_FILE_NAME = "native_logs";
+
     static final int MSG_NDEF_TAG = 0;
     static final int MSG_LLCP_LINK_ACTIVATION = 1;
     static final int MSG_LLCP_LINK_DEACTIVATED = 2;
@@ -421,7 +428,7 @@
         }
 
         if (isNfcProvisioningEnabled) {
-            mInProvisionMode = Settings.Secure.getInt(mContentResolver,
+            mInProvisionMode = Settings.Global.getInt(mContentResolver,
                     Settings.Global.DEVICE_PROVISIONED, 0) == 0;
         } else {
             mInProvisionMode = false;
@@ -611,6 +618,7 @@
                     disableInternal();
                     break;
                 case TASK_BOOT:
+                    boolean initialized;
                     if (mPrefs.getBoolean(PREF_FIRST_BOOT, true)) {
                         Log.i(TAG, "First Boot");
                         mPrefsEditor.putBoolean(PREF_FIRST_BOOT, false);
@@ -620,12 +628,14 @@
                     Log.d(TAG, "checking on firmware download");
                     if (mPrefs.getBoolean(PREF_NFC_ON, NFC_ON_DEFAULT)) {
                         Log.d(TAG, "NFC is on. Doing normal stuff");
-                        enableInternal();
+                        initialized = enableInternal();
                     } else {
                         Log.d(TAG, "NFC is off.  Checking firmware version");
-                        mDeviceHost.checkFirmware();
+                        initialized = mDeviceHost.checkFirmware();
                     }
-                    SystemProperties.set("nfc.initialized", "true");
+                    if (initialized) {
+                        SystemProperties.set("nfc.initialized", "true");
+                    }
                     break;
             }
 
@@ -1652,7 +1662,12 @@
                 Log.w(TAG, "Watchdog thread interruped.");
                 interrupt();
             }
+            if(mRoutingWakeLock.isHeld()){
+                Log.e(TAG, "Watchdog triggered, release lock before aborting.");
+                mRoutingWakeLock.release();
+            }
             Log.e(TAG, "Watchdog triggered, aborting.");
+            storeNativeCrashLogs();
             mDeviceHost.doAbort(getName());
         }
 
@@ -1689,7 +1704,7 @@
             }
             WatchDogThread watchDog = new WatchDogThread("applyRouting", ROUTING_WATCHDOG_MS);
             if (mInProvisionMode) {
-                mInProvisionMode = Settings.Secure.getInt(mContentResolver,
+                mInProvisionMode = Settings.Global.getInt(mContentResolver,
                         Settings.Global.DEVICE_PROVISIONED, 0) == 0;
                 if (!mInProvisionMode) {
                     // Notify dispatcher it's fine to dispatch to any package now
@@ -2042,8 +2057,10 @@
 
                 case MSG_NDEF_TAG:
                     if (DBG) Log.d(TAG, "Tag detected, notifying applications");
-                    mPowerManager.userActivity(SystemClock.uptimeMillis(),
-                            PowerManager.USER_ACTIVITY_EVENT_OTHER, 0);
+                    if (mScreenState == ScreenStateHelper.SCREEN_STATE_ON_UNLOCKED) {
+                        mPowerManager.userActivity(SystemClock.uptimeMillis(),
+                                PowerManager.USER_ACTIVITY_EVENT_OTHER, 0);
+                    }
                     mNumTagsDetected.incrementAndGet();
                     TagEndpoint tag = (TagEndpoint) msg.obj;
                     byte[] debounceTagUid;
@@ -2092,6 +2109,10 @@
                         // First try to see if this was a bad tag read
                         if (!tag.reconnect()) {
                             tag.disconnect();
+                            if (mScreenState == ScreenStateHelper.SCREEN_STATE_ON_UNLOCKED) {
+                                Toast.makeText(mContext,
+                                        R.string.tag_read_error, Toast.LENGTH_SHORT).show();
+                            }
                             break;
                         }
                     }
@@ -2450,6 +2471,10 @@
             int dispatchResult = mNfcDispatcher.dispatchTag(tag);
             if (dispatchResult == NfcDispatcher.DISPATCH_FAIL) {
                 unregisterObject(tagEndpoint.getHandle());
+                if (mScreenState == ScreenStateHelper.SCREEN_STATE_ON_UNLOCKED) {
+                    Toast.makeText(mContext,
+                            R.string.tag_dispatch_failed, Toast.LENGTH_SHORT).show();
+                }
                 playSound(SOUND_ERROR);
             } else if (dispatchResult == NfcDispatcher.DISPATCH_SUCCESS) {
                 mVibrator.vibrate(mVibrationEffect);
@@ -2597,6 +2622,41 @@
         }
     }
 
+    private void copyNativeCrashLogsIfAny(PrintWriter pw) {
+      try {
+          File file = new File(mContext.getFilesDir(), NATIVE_LOG_FILE_NAME);
+          if (!file.exists()) {
+            return;
+          }
+          pw.println("---BEGIN: NATIVE CRASH LOG----");
+          Scanner sc = new Scanner(file);
+          while(sc.hasNextLine()) {
+              String s = sc.nextLine();
+              pw.println(s);
+          }
+          pw.println("---END: NATIVE CRASH LOG----");
+          sc.close();
+      } catch (IOException e) {
+          Log.e(TAG, "Exception in copyNativeCrashLogsIfAny " + e);
+      }
+    }
+
+    private void storeNativeCrashLogs() {
+      try {
+          File file = new File(mContext.getFilesDir(), NATIVE_LOG_FILE_NAME);
+          if (!file.exists()) {
+              file.createNewFile();
+          }
+
+          FileOutputStream fos = new FileOutputStream(file);
+          mDeviceHost.dump(fos.getFD());
+          fos.flush();
+          fos.close();
+      } catch (IOException e) {
+          Log.e(TAG, "Exception in storeNativeCrashLogs " + e);
+      }
+    }
+
     void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
                 != PackageManager.PERMISSION_GRANTED) {
@@ -2616,6 +2676,7 @@
                 mCardEmulationManager.dump(fd, pw, args);
             }
             mNfcDispatcher.dump(fd, pw, args);
+            copyNativeCrashLogsIfAny(pw);
             pw.flush();
             mDeviceHost.dump(fd);
         }
diff --git a/src/com/android/nfc/P2pEventManager.java b/src/com/android/nfc/P2pEventManager.java
index 1f84947..faec610 100644
--- a/src/com/android/nfc/P2pEventManager.java
+++ b/src/com/android/nfc/P2pEventManager.java
@@ -207,4 +207,11 @@
         mInDebounce = false;
     }
 
+    @Override
+    public boolean isP2pIdle() {
+        if (mSendUi != null && !mSendUi.isSendUiInIdleState()) {
+            return false;
+        }
+        return true;
+    }
 }
diff --git a/src/com/android/nfc/P2pLinkManager.java b/src/com/android/nfc/P2pLinkManager.java
index 3dd601b..d34ad20 100755
--- a/src/com/android/nfc/P2pLinkManager.java
+++ b/src/com/android/nfc/P2pLinkManager.java
@@ -132,6 +132,11 @@
      */
     public void onP2pOutOfRange();
 
+    /**
+     * Indicates the P2P Beam UI is in idle mode.
+     */
+    public boolean isP2pIdle();
+
     public interface Callback {
         public void onP2pSendConfirmed();
         public void onP2pCanceled();
@@ -442,6 +447,10 @@
             mPeerLlcpVersion = peerLlcpVersion;
             switch (mLinkState) {
                 case LINK_STATE_DOWN:
+                    if (!mEventListener.isP2pIdle() && mSendState != SEND_STATE_PENDING) {
+                        break;
+                    }
+
                     if (DBG) Log.d(TAG, "onP2pInRange()");
                     // Start taking a screenshot
                     mEventListener.onP2pInRange();
diff --git a/src/com/android/nfc/beam/BeamManager.java b/src/com/android/nfc/beam/BeamManager.java
index 0334663..cf5f334 100644
--- a/src/com/android/nfc/beam/BeamManager.java
+++ b/src/com/android/nfc/beam/BeamManager.java
@@ -138,6 +138,7 @@
         Intent intent = new Intent(ACTION_WHITELIST_DEVICE);
         intent.setPackage(context.getString(R.string.bluetooth_package));
         intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         context.sendBroadcastAsUser(intent, UserHandle.CURRENT);
     }
 
diff --git a/src/com/android/nfc/beam/BeamReceiveService.java b/src/com/android/nfc/beam/BeamReceiveService.java
index 9d24dd0..5602997 100644
--- a/src/com/android/nfc/beam/BeamReceiveService.java
+++ b/src/com/android/nfc/beam/BeamReceiveService.java
@@ -2,7 +2,6 @@
 
 import android.app.Service;
 import android.bluetooth.BluetoothAdapter;
-import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -33,19 +32,6 @@
     private Messenger mCompleteCallback;
 
     private final BluetoothAdapter mBluetoothAdapter;
-    private final BroadcastReceiver mBluetoothStateReceiver = new BroadcastReceiver() {
-        @Override
-        public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
-            if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
-                int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
-                        BluetoothAdapter.ERROR);
-                if (state == BluetoothAdapter.STATE_OFF) {
-                    mBluetoothEnabledByNfc = false;
-                }
-            }
-        }
-    };
 
     public BeamReceiveService() {
         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
@@ -75,23 +61,12 @@
         }
     }
 
-    // TODO: figure out a way to not duplicate this code
-    @Override
-    public void onCreate() {
-        super.onCreate();
-
-        // register BT state receiver
-        IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
-        registerReceiver(mBluetoothStateReceiver, filter);
-    }
-
     @Override
     public void onDestroy() {
         super.onDestroy();
         if (mBeamStatusReceiver != null) {
             unregisterReceiver(mBeamStatusReceiver);
         }
-        unregisterReceiver(mBluetoothStateReceiver);
     }
 
     boolean prepareToReceive(BeamTransferRecord transferRecord) {
diff --git a/src/com/android/nfc/beam/BeamSendService.java b/src/com/android/nfc/beam/BeamSendService.java
index 6c013ea..f4880d4 100644
--- a/src/com/android/nfc/beam/BeamSendService.java
+++ b/src/com/android/nfc/beam/BeamSendService.java
@@ -153,8 +153,6 @@
                     mTransferManager.mDataLinkType == BeamTransferRecord.DATA_LINK_TYPE_BLUETOOTH) {
                 mTransferManager.start();
             }
-        } else if (state == BluetoothAdapter.STATE_OFF) {
-            mBluetoothEnabledByNfc = false;
         }
     }
 
diff --git a/src/com/android/nfc/beam/BeamTransferManager.java b/src/com/android/nfc/beam/BeamTransferManager.java
index be20aad..08372b8 100644
--- a/src/com/android/nfc/beam/BeamTransferManager.java
+++ b/src/com/android/nfc/beam/BeamTransferManager.java
@@ -185,6 +185,7 @@
         Intent intent = new Intent(ACTION_WHITELIST_DEVICE);
         intent.setPackage(mContext.getString(R.string.bluetooth_package));
         intent.putExtra(BluetoothDevice.EXTRA_DEVICE, device);
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         mContext.sendBroadcastAsUser(intent, UserHandle.CURRENT);
     }
 
diff --git a/src/com/android/nfc/beam/SendUi.java b/src/com/android/nfc/beam/SendUi.java
index 64dab18..ab35467 100644
--- a/src/com/android/nfc/beam/SendUi.java
+++ b/src/com/android/nfc/beam/SendUi.java
@@ -16,6 +16,8 @@
 
 package com.android.nfc.beam;
 
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+
 import com.android.nfc.R;
 import com.android.nfc.beam.FireflyRenderer;
 
@@ -240,6 +242,7 @@
                 PixelFormat.OPAQUE);
         mWindowLayoutParams.privateFlags |=
                 WindowManager.LayoutParams.PRIVATE_FLAG_SHOW_FOR_ALL_USERS;
+        mWindowLayoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
         mWindowLayoutParams.token = new Binder();
 
         mFrameCounterAnimator = new TimeAnimator();
@@ -577,17 +580,10 @@
                 mState = STATE_IDLE;
             } else if (mState == STATE_W4_SCREENSHOT_PRESEND_REQUESTED ||
                     mState == STATE_W4_SCREENSHOT_PRESEND_NFC_TAP_REQUESTED) {
-                if (result != null) {
-                    mScreenshotBitmap = result;
-                    boolean requestTap = (mState == STATE_W4_SCREENSHOT_PRESEND_NFC_TAP_REQUESTED);
-                    mState = STATE_W4_PRESEND;
-                    showPreSend(requestTap);
-                } else {
-                    // Failed to take screenshot; reset state to idle
-                    // and don't do anything
-                    Log.e(TAG, "Failed to create screenshot");
-                    mState = STATE_IDLE;
-                }
+                mScreenshotBitmap = result;
+                boolean requestTap = (mState == STATE_W4_SCREENSHOT_PRESEND_NFC_TAP_REQUESTED);
+                mState = STATE_W4_PRESEND;
+                showPreSend(requestTap);
             } else {
                 Log.e(TAG, "Invalid state on screenshot completion: " + Integer.toString(mState));
             }
@@ -881,6 +877,10 @@
     public void onActionModeFinished(ActionMode mode) {
     }
 
+    public boolean isSendUiInIdleState() {
+        return mState == STATE_IDLE;
+    }
+
     private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/nfc/cardemulation/HostEmulationManager.java b/src/com/android/nfc/cardemulation/HostEmulationManager.java
index 0a5ce36..d1880ef 100644
--- a/src/com/android/nfc/cardemulation/HostEmulationManager.java
+++ b/src/com/android/nfc/cardemulation/HostEmulationManager.java
@@ -28,6 +28,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
+import android.os.Looper;
 import android.os.Message;
 import android.os.Messenger;
 import android.os.RemoteException;
@@ -106,14 +107,16 @@
         mKeyguard = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
     }
 
-    public void onPreferredPaymentServiceChanged(ComponentName service) {
-        synchronized (mLock) {
-            if (service != null) {
-                bindPaymentServiceLocked(ActivityManager.getCurrentUser(), service);
-            } else {
-                unbindPaymentServiceLocked();
+    public void onPreferredPaymentServiceChanged(final ComponentName service) {
+        new Handler(Looper.getMainLooper()).post(() -> {
+            synchronized (mLock) {
+                if (service != null) {
+                    bindPaymentServiceLocked(ActivityManager.getCurrentUser(), service);
+                } else {
+                    unbindPaymentServiceLocked();
+                }
             }
-        }
+        });
      }
 
      public void onPreferredForegroundServiceChanged(ComponentName service) {
diff --git a/src/com/android/nfc/cardemulation/PreferredServices.java b/src/com/android/nfc/cardemulation/PreferredServices.java
index 01fe229..fadb879 100644
--- a/src/com/android/nfc/cardemulation/PreferredServices.java
+++ b/src/com/android/nfc/cardemulation/PreferredServices.java
@@ -54,6 +54,7 @@
  */
 public class PreferredServices implements com.android.nfc.ForegroundUtils.Callback {
     static final String TAG = "PreferredCardEmulationServices";
+    static final boolean DBG = false;
     static final Uri paymentDefaultUri = Settings.Secure.getUriFor(
             Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT);
     static final Uri paymentForegroundUri = Settings.Secure.getUriFor(
@@ -255,8 +256,8 @@
                     RegisteredAidCache.AidResolveInfo resolveInfo = mAidCache.resolveAid(aid);
                     if (CardEmulation.CATEGORY_PAYMENT.equals(resolveInfo.category) &&
                             paymentServiceInfo.equals(resolveInfo.defaultService)) {
-                        Log.d(TAG, "AID " + aid + " is handled by the default payment app, " +
-                                "and the user has not allowed payments to be overridden.");
+                        if (DBG) Log.d(TAG, "AID " + aid + " is handled by the default payment app,"
+                                + " and the user has not allowed payments to be overridden.");
                         return false;
                     }
                 }
diff --git a/src/com/android/nfc/handover/BluetoothPeripheralHandover.java b/src/com/android/nfc/handover/BluetoothPeripheralHandover.java
index 1645656..09cdf04 100644
--- a/src/com/android/nfc/handover/BluetoothPeripheralHandover.java
+++ b/src/com/android/nfc/handover/BluetoothPeripheralHandover.java
@@ -30,6 +30,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.media.AudioManager;
 import android.media.session.MediaSessionLegacyHelper;
 import android.os.Handler;
 import android.os.Looper;
@@ -94,6 +95,7 @@
     final BluetoothAdapter mBluetoothAdapter;
     final int mTransport;
     final boolean mProvisioning;
+    final AudioManager mAudioManager;
 
     final Object mLock = new Object();
 
@@ -107,6 +109,7 @@
     OobData mOobData;
     boolean mIsHeadsetAvailable;
     boolean mIsA2dpAvailable;
+    boolean mIsMusicActive;
 
     // protected by mLock
     BluetoothA2dp mA2dp;
@@ -130,7 +133,7 @@
         mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
 
         ContentResolver contentResolver = mContext.getContentResolver();
-        mProvisioning = Settings.Secure.getInt(contentResolver,
+        mProvisioning = Settings.Global.getInt(contentResolver,
                 Settings.Global.DEVICE_PROVISIONED, 0) == 0;
 
         mIsHeadsetAvailable = hasHeadsetCapability(uuids, btClass);
@@ -143,6 +146,8 @@
             mIsA2dpAvailable = true;
         }
 
+        mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
+
         mState = STATE_INIT;
     }
 
@@ -242,6 +247,10 @@
                             }
                             Log.i(TAG, "ACTION_CONNECT addr=" + mDevice + " name=" + mName);
                             mAction = ACTION_CONNECT;
+
+                            if (mIsA2dpAvailable) {
+                                mIsMusicActive = mAudioManager.isMusicActive();
+                            }
                         }
                     }
                 }
@@ -550,6 +559,10 @@
     }
 
     void startTheMusic() {
+        if (!mContext.getResources().getBoolean(R.bool.enable_auto_play) && !mIsMusicActive) {
+            return;
+        }
+
         MediaSessionLegacyHelper helper = MediaSessionLegacyHelper.getHelper(mContext);
         if (helper != null) {
             KeyEvent keyEvent = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_PLAY);
diff --git a/src/com/android/nfc/handover/PeripheralHandoverService.java b/src/com/android/nfc/handover/PeripheralHandoverService.java
index e2687cf..70364a5 100644
--- a/src/com/android/nfc/handover/PeripheralHandoverService.java
+++ b/src/com/android/nfc/handover/PeripheralHandoverService.java
@@ -211,9 +211,6 @@
                     mNfcAdapter.resumePolling();
                 }
             }
-        } else if (state == BluetoothAdapter.STATE_OFF) {
-            mBluetoothEnabledByNfc = false;
-            mBluetoothHeadsetConnected = false;
         }
     }