diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 7efa15d..636799d 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -94,8 +94,7 @@
         final Activity activity = getActivity();
         mAirplaneModePreference = (CheckBoxPreference) findPreference(KEY_TOGGLE_AIRPLANE);
         CheckBoxPreference nfc = (CheckBoxPreference) findPreference(KEY_TOGGLE_NFC);
-        PreferenceScreen zeroclick = (PreferenceScreen)
-                findPreference(KEY_ZEROCLICK_SETTINGS);
+        PreferenceScreen zeroclick = (PreferenceScreen) findPreference(KEY_ZEROCLICK_SETTINGS);
 
         mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference);
         mNfcEnabler = new NfcEnabler(activity, nfc, zeroclick);
@@ -113,11 +112,18 @@
             // No bluetooth-dependent items in the list. Code kept in case one is added later.
         }
 
+        // Manually set dependencies for NFC when not toggleable.
+        if (toggleable == null || !toggleable.contains(Settings.System.RADIO_NFC)) {
+            findPreference(KEY_TOGGLE_NFC).setDependency(KEY_TOGGLE_AIRPLANE);
+            findPreference(KEY_ZEROCLICK_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
+        }
+
         // Remove NFC if its not available
         mNfcAdapter = NfcAdapter.getDefaultAdapter(activity);
         if (mNfcAdapter == null) {
             getPreferenceScreen().removePreference(nfc);
             getPreferenceScreen().removePreference(zeroclick);
+            mNfcEnabler = null;
         }
 
         // Remove Mobile Network Settings if it's a wifi-only device.
@@ -176,18 +182,8 @@
         super.onResume();
 
         mAirplaneModeEnabler.resume();
-        mNfcEnabler.resume();
-
-        if (mNfcAdapter != null) {
-            // Update zero-click subtitle
-            Preference zeroClick = getPreferenceScreen().
-                    findPreference(KEY_ZEROCLICK_SETTINGS);
-
-            if (mNfcAdapter.zeroClickEnabled()) {
-                zeroClick.setSummary(R.string.zeroclick_on_summary);
-            } else {
-                zeroClick.setSummary(R.string.zeroclick_off_summary);
-            }
+        if (mNfcEnabler != null) {
+            mNfcEnabler.resume();
         }
     }
 
@@ -196,7 +192,9 @@
         super.onPause();
 
         mAirplaneModeEnabler.pause();
-        mNfcEnabler.pause();
+        if (mNfcEnabler != null) {
+            mNfcEnabler.pause();
+        }
     }
 
     @Override
diff --git a/src/com/android/settings/nfc/NfcEnabler.java b/src/com/android/settings/nfc/NfcEnabler.java
index 99cf8f0..722787d 100644
--- a/src/com/android/settings/nfc/NfcEnabler.java
+++ b/src/com/android/settings/nfc/NfcEnabler.java
@@ -27,6 +27,8 @@
 import android.preference.PreferenceScreen;
 import android.util.Log;
 
+import com.android.settings.R;
+
 /**
  * NfcEnabler is a helper to manage the Nfc on/off checkbox preference. It is
  * turns on/off Nfc and ensures the summary of the preference reflects the
@@ -46,16 +48,13 @@
         @Override
         public void onReceive(Context context, Intent intent) {
             String action = intent.getAction();
-            if (NfcAdapter.ACTION_ADAPTER_STATE_CHANGE.equals(action)) {
-                handleNfcStateChanged(intent.getBooleanExtra(
-                    NfcAdapter.EXTRA_NEW_BOOLEAN_STATE,
-                    false));
+            if (NfcAdapter.ACTION_ADAPTER_STATE_CHANGED.equals(action)) {
+                handleNfcStateChanged(intent.getIntExtra(NfcAdapter.EXTRA_ADAPTER_STATE,
+                        NfcAdapter.STATE_OFF));
             }
         }
     };
 
-    private boolean mNfcState;
-
     public NfcEnabler(Context context, CheckBoxPreference checkBoxPreference,
             PreferenceScreen zeroclick) {
         mContext = context;
@@ -66,20 +65,20 @@
         if (mNfcAdapter == null) {
             // NFC is not supported
             mCheckbox.setEnabled(false);
+            mZeroClick.setEnabled(false);
+            mIntentFilter = null;
+            return;
         }
-
-        mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGE);
-
+        mIntentFilter = new IntentFilter(NfcAdapter.ACTION_ADAPTER_STATE_CHANGED);
     }
 
     public void resume() {
         if (mNfcAdapter == null) {
             return;
         }
+        handleNfcStateChanged(mNfcAdapter.getAdapterState());
         mContext.registerReceiver(mReceiver, mIntentFilter);
         mCheckbox.setOnPreferenceChangeListener(this);
-        mNfcState = mNfcAdapter.isEnabled();
-        mCheckbox.setChecked(mNfcState);
     }
 
     public void pause() {
@@ -96,41 +95,43 @@
         final boolean desiredState = (Boolean) value;
         mCheckbox.setEnabled(false);
 
-        // Start async update of the NFC adapter state, as the API is
-        // unfortunately blocking...
-        new Thread("toggleNFC") {
-            @Override
-            public void run() {
-                Log.d(TAG, "Setting NFC enabled state to: " + desiredState);
-                boolean success = false;
-                if (desiredState) {
-                    success = mNfcAdapter.enable();
-                } else {
-                    success = mNfcAdapter.disable();
-                }
-                if (success) {
-                    Log.d(TAG, "Successfully changed NFC enabled state to " + desiredState);
-                    mHandler.post(new Runnable() {
-                        public void run() {
-                            handleNfcStateChanged(desiredState);
-                        }
-                    });
-                } else {
-                    Log.w(TAG, "Error setting NFC enabled state to " + desiredState);
-                    mHandler.post(new Runnable() {
-                            public void run() {
-                                mCheckbox.setEnabled(true);
-                            }
-                        });
-                }
-            }
-        }.start();
+        if (desiredState) {
+            mNfcAdapter.enable();
+        } else {
+            mNfcAdapter.disable();
+        }
+
         return false;
     }
 
-    private void handleNfcStateChanged(boolean newState) {
-        mCheckbox.setChecked(newState);
-        mCheckbox.setEnabled(true);
-        mZeroClick.setEnabled(newState);
+    private void handleNfcStateChanged(int newState) {
+        switch (newState) {
+        case NfcAdapter.STATE_OFF:
+            mCheckbox.setChecked(false);
+            mCheckbox.setEnabled(true);
+            mZeroClick.setEnabled(false);
+            mZeroClick.setSummary(R.string.zeroclick_off_summary);
+            break;
+        case NfcAdapter.STATE_ON:
+            mCheckbox.setChecked(true);
+            mCheckbox.setEnabled(true);
+            mZeroClick.setEnabled(true);
+            if (mNfcAdapter.isZeroClickEnabled()) {
+                mZeroClick.setSummary(R.string.zeroclick_on_summary);
+            } else {
+                mZeroClick.setSummary(R.string.zeroclick_off_summary);
+            }
+            break;
+        case NfcAdapter.STATE_TURNING_ON:
+            mCheckbox.setChecked(true);
+            mCheckbox.setEnabled(false);
+            mZeroClick.setEnabled(false);
+            break;
+        case NfcAdapter.STATE_TURNING_OFF:
+            mCheckbox.setChecked(false);
+            mCheckbox.setEnabled(false);
+            mZeroClick.setEnabled(false);
+            break;
+        }
     }
 }
diff --git a/src/com/android/settings/nfc/ZeroClick.java b/src/com/android/settings/nfc/ZeroClick.java
index 5c67e52..1b59b52 100644
--- a/src/com/android/settings/nfc/ZeroClick.java
+++ b/src/com/android/settings/nfc/ZeroClick.java
@@ -63,7 +63,7 @@
         mActionBarSwitch.setOnCheckedChangeListener(this);
 
         mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
-        mActionBarSwitch.setChecked(mNfcAdapter.zeroClickEnabled());
+        mActionBarSwitch.setChecked(mNfcAdapter.isZeroClickEnabled());
     }
 
     @Override
@@ -77,7 +77,7 @@
     private void initView(View view) {
         mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
         mActionBarSwitch.setOnCheckedChangeListener(this);
-        mActionBarSwitch.setChecked(mNfcAdapter.zeroClickEnabled());
+        mActionBarSwitch.setChecked(mNfcAdapter.isZeroClickEnabled());
     }
 
     @Override
