Index: device/nfc/android/java/src/org/chromium/device/nfc/NfcImpl.java |
diff --git a/device/nfc/android/java/src/org/chromium/device/nfc/NfcImpl.java b/device/nfc/android/java/src/org/chromium/device/nfc/NfcImpl.java |
index fd6fbdc320430247ecce6abb661a1cc72b2f78a5..7552488ed268b7853dc9395f08d9351c0015bfed 100644 |
--- a/device/nfc/android/java/src/org/chromium/device/nfc/NfcImpl.java |
+++ b/device/nfc/android/java/src/org/chromium/device/nfc/NfcImpl.java |
@@ -346,7 +346,7 @@ public class NfcImpl implements Nfc { |
private void enableReaderMode() { |
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; |
- if (mReaderCallbackHandler != null || mActivity == null) return; |
+ if (mReaderCallbackHandler != null || mActivity == null || mNfcAdapter == null) return; |
// TODO(crbug.com/625589): Check if there are active watch operations. |
if (mPendingPushOperation == null) return; |
@@ -366,8 +366,12 @@ public class NfcImpl implements Nfc { |
private void disableReaderMode() { |
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return; |
+ // There is no API that could query whether reader mode is enabled for adapter. |
+ // If mReaderCallbackHandler is null, reader mode is not enabled. |
+ if (mReaderCallbackHandler == null) return; |
+ |
mReaderCallbackHandler = null; |
- if (mActivity != null && !mActivity.isDestroyed()) { |
+ if (mActivity != null && mNfcAdapter != null && !mActivity.isDestroyed()) { |
mNfcAdapter.disableReaderMode(mActivity); |
} |
} |