diff --git a/core/java/android/nfc/INfcTag.aidl b/core/java/android/nfc/INfcTag.aidl index 69e5bc7d3a884..852ab5ede25d9 100644 --- a/core/java/android/nfc/INfcTag.aidl +++ b/core/java/android/nfc/INfcTag.aidl @@ -25,6 +25,7 @@ interface INfcTag { int close(int nativeHandle); int connect(int nativeHandle); + int reconnect(int nativeHandle); int[] getTechList(int nativeHandle); byte[] getUid(int nativeHandle); boolean isNdef(int nativeHandle); diff --git a/core/java/android/nfc/technology/BasicTagTechnology.java b/core/java/android/nfc/technology/BasicTagTechnology.java index ba8bd559cfc23..a50c10b1926fb 100644 --- a/core/java/android/nfc/technology/BasicTagTechnology.java +++ b/core/java/android/nfc/technology/BasicTagTechnology.java @@ -162,7 +162,10 @@ import android.util.Log; public void close() { mIsConnected = false; try { - mTagService.close(mTag.getServiceHandle()); + /* Note that we don't want to physically disconnect the tag, + * but just reconnect to it to reset its state + */ + mTagService.reconnect(mTag.getServiceHandle()); } catch (RemoteException e) { attemptDeadServiceRecovery(e); }