diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 20df0d6..bd456e8 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -967,7 +967,7 @@
 
         <!-- NFC settings -->
         <activity android:name="Settings$NfcSharingSettingsActivity"
-                android:label="@string/zeroclick_settings_title"
+                android:label="@string/ndef_push_settings_title"
                 android:clearTaskOnLaunch="true">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
@@ -975,7 +975,7 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                android:value="com.android.settings.nfc.ShareTap" />
+                android:value="com.android.settings.nfc.NdefPush" />
         </activity>
 
         <!-- Accessibility tutorial -->
diff --git a/res/drawable/sharetap_anim.xml b/res/drawable/ndef_push_anim.xml
similarity index 100%
rename from res/drawable/sharetap_anim.xml
rename to res/drawable/ndef_push_anim.xml
diff --git a/res/layout/sharetap.xml b/res/layout/ndefpush.xml
similarity index 86%
rename from res/layout/sharetap.xml
rename to res/layout/ndefpush.xml
index bd65df2..6892850 100644
--- a/res/layout/sharetap.xml
+++ b/res/layout/ndefpush.xml
@@ -30,23 +30,23 @@
             android:layout_height="wrap_content"
             android:orientation="vertical">
 
-            <TextView android:id="@+id/sharetap_explained"
+            <TextView android:id="@+id/ndef_push_explained"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="20dip"
                 android:gravity="top"
-                android:text="@string/zeroclick_explained"
+                android:text="@string/ndef_push_explained"
             />
-            <ImageView android:id="@+id/sharetap_image"
+            <ImageView android:id="@+id/ndef_push_image"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
             />
-            <TextView android:id="@+id/sharetap_safety"
+            <TextView android:id="@+id/ndef_push_safety"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="20dip"
                 android:gravity="top"
-                android:text="@string/zeroclick_top"
+                android:text="@string/ndef_push_top"
             />
         </LinearLayout>
 
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 296f5d8..87be0e6 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1098,15 +1098,15 @@
     <!-- NFC settings -->
     <!-- Used in the 1st-level settings screen to turn on NFC -->
     <string name="nfc_quick_toggle_title">NFC</string>
-    <!-- Used to enter the ShareTap sharing preferences screen -->
-    <string name="zeroclick_settings_title">ShareTap</string>
-    <string name="zeroclick_settings_summary"></string>
-    <string name="zeroclick_on_summary">On</string>
-    <string name="zeroclick_off_summary">Off</string>
-    <!-- Used in the zero-click sharing preferences screen -->
-    <string name="zeroclick_label">ShareTap</string>
-    <string name="zeroclick_explained">Share content by touching two NFC-enabled devices back to back.</string>
-    <string name="zeroclick_top">The app on the top device\'s screen sends content to the bottom device.\n\nYour data is safe: nothing is shared unless both devices are on and unlocked.\n\nYou can turn this feature off in Settings > More > ShareTap.</string>
+    <!-- Used to enter the NdefPush sharing preferences screen -->
+    <string name="ndef_push_settings_title">ShareTap</string>
+    <string name="ndef_push_settings_summary"></string>
+    <string name="ndef_push_on_summary">On</string>
+    <string name="ndef_push_off_summary">Off</string>
+    <!-- Used in the NdefPush sharing preferences screen -->
+    <string name="ndef_push_label">ShareTap</string>
+    <string name="ndef_push_explained">Share content by touching two NFC-enabled devices back to back.</string>
+    <string name="ndef_push_top">The app on the top device\'s screen sends content to the bottom device.\n\nYour data is safe: nothing is shared unless both devices are on and unlocked.\n\nYou can turn this feature off in Settings > More > ShareTap.</string>
     <!-- Wi-Fi Settings --> <skip />
     <!-- Used in the 1st-level settings screen to turn on Wi-Fi -->
     <string name="wifi_quick_toggle_title">Wi-Fi</string>
diff --git a/res/xml/wireless_settings.xml b/res/xml/wireless_settings.xml
index d908fd7..81929d0 100644
--- a/res/xml/wireless_settings.xml
+++ b/res/xml/wireless_settings.xml
@@ -39,10 +39,10 @@
         android:persistent="false" />
 
     <PreferenceScreen
-        android:fragment="com.android.settings.nfc.ShareTap"
-        android:key="zeroclick_settings"
-        android:title="@string/zeroclick_settings_title"
-        android:summary="@string/zeroclick_settings_summary" >
+        android:fragment="com.android.settings.nfc.NdefPush"
+        android:key="ndef_push_settings"
+        android:title="@string/ndef_push_settings_title"
+        android:summary="@string/ndef_push_settings_summary" >
     </PreferenceScreen>
 
     <PreferenceScreen
diff --git a/src/com/android/settings/WirelessSettings.java b/src/com/android/settings/WirelessSettings.java
index 55b395a..e1fc882 100644
--- a/src/com/android/settings/WirelessSettings.java
+++ b/src/com/android/settings/WirelessSettings.java
@@ -41,7 +41,7 @@
 
     private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane";
     private static final String KEY_TOGGLE_NFC = "toggle_nfc";
-    private static final String KEY_ZEROCLICK_SETTINGS = "zeroclick_settings";
+    private static final String KEY_NDEF_PUSH_SETTINGS = "ndef_push_settings";
     private static final String KEY_VPN_SETTINGS = "vpn_settings";
     private static final String KEY_WIFI_P2P_SETTINGS = "wifi_p2p_settings";
     private static final String KEY_TETHER_SETTINGS = "tether_settings";
@@ -96,10 +96,10 @@
         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 ndefPush = (PreferenceScreen) findPreference(KEY_NDEF_PUSH_SETTINGS);
 
         mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference);
-        mNfcEnabler = new NfcEnabler(activity, nfc, zeroclick);
+        mNfcEnabler = new NfcEnabler(activity, nfc, ndefPush);
 
         String toggleable = Settings.System.getString(activity.getContentResolver(),
                 Settings.System.AIRPLANE_MODE_TOGGLEABLE_RADIOS);
@@ -117,14 +117,14 @@
         // 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);
+            findPreference(KEY_NDEF_PUSH_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE);
         }
 
         // Remove NFC if its not available
         mNfcAdapter = NfcAdapter.getDefaultAdapter(activity);
         if (mNfcAdapter == null) {
             getPreferenceScreen().removePreference(nfc);
-            getPreferenceScreen().removePreference(zeroclick);
+            getPreferenceScreen().removePreference(ndefPush);
             mNfcEnabler = null;
         }
 
diff --git a/src/com/android/settings/nfc/ShareTap.java b/src/com/android/settings/nfc/NdefPush.java
similarity index 88%
rename from src/com/android/settings/nfc/ShareTap.java
rename to src/com/android/settings/nfc/NdefPush.java
index e434781..bbe3f32 100644
--- a/src/com/android/settings/nfc/ShareTap.java
+++ b/src/com/android/settings/nfc/NdefPush.java
@@ -33,7 +33,7 @@
 import android.widget.Switch;
 import com.android.settings.R;
 
-public class ShareTap extends Fragment
+public class NdefPush extends Fragment
         implements CompoundButton.OnCheckedChangeListener {
     private View mView;
     private AnimationDrawable mAnimation;
@@ -61,35 +61,35 @@
                         ActionBar.LayoutParams.WRAP_CONTENT,
                         ActionBar.LayoutParams.WRAP_CONTENT,
                         Gravity.CENTER_VERTICAL | Gravity.RIGHT));
-                activity.getActionBar().setTitle(R.string.zeroclick_settings_title);
+                activity.getActionBar().setTitle(R.string.ndef_push_settings_title);
             }
         }
 
         mActionBarSwitch.setOnCheckedChangeListener(this);
 
         mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity());
-        mActionBarSwitch.setChecked(mNfcAdapter.isZeroClickEnabled());
+        mActionBarSwitch.setChecked(mNfcAdapter.isNdefPushEnabled());
     }
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
-        mView = inflater.inflate(R.layout.sharetap, container, false);
+        mView = inflater.inflate(R.layout.ndefpush, container, false);
         initView(mView);
         return mView;
     }
 
     private void initView(View view) {
         mActionBarSwitch.setOnCheckedChangeListener(this);
-        mActionBarSwitch.setChecked(mNfcAdapter.isZeroClickEnabled());
+        mActionBarSwitch.setChecked(mNfcAdapter.isNdefPushEnabled());
     }
 
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
 
-        mImageView = (ImageView) getActivity().findViewById(R.id.sharetap_image);
-        mImageView.setBackgroundResource(R.drawable.sharetap_anim);
+        mImageView = (ImageView) getActivity().findViewById(R.id.ndef_push_image);
+        mImageView.setBackgroundResource(R.drawable.ndef_push_anim);
         mAnimation = (AnimationDrawable) mImageView.getBackground();
 
     }
@@ -117,9 +117,9 @@
         boolean success = false;
         mActionBarSwitch.setEnabled(false);
         if (desiredState) {
-            success = mNfcAdapter.enableZeroClick();
+            success = mNfcAdapter.enableNdefPush();
         } else {
-            success = mNfcAdapter.disableZeroClick();
+            success = mNfcAdapter.disableNdefPush();
         }
         if (success) {
             mActionBarSwitch.setChecked(desiredState);
diff --git a/src/com/android/settings/nfc/NfcEnabler.java b/src/com/android/settings/nfc/NfcEnabler.java
index 722787d..9cf117d 100644
--- a/src/com/android/settings/nfc/NfcEnabler.java
+++ b/src/com/android/settings/nfc/NfcEnabler.java
@@ -39,7 +39,7 @@
 
     private final Context mContext;
     private final CheckBoxPreference mCheckbox;
-    private final PreferenceScreen mZeroClick;
+    private final PreferenceScreen mNdefPush;
     private final NfcAdapter mNfcAdapter;
     private final IntentFilter mIntentFilter;
     private final Handler mHandler = new Handler();
@@ -56,16 +56,16 @@
     };
 
     public NfcEnabler(Context context, CheckBoxPreference checkBoxPreference,
-            PreferenceScreen zeroclick) {
+            PreferenceScreen ndefPush) {
         mContext = context;
         mCheckbox = checkBoxPreference;
-        mZeroClick = zeroclick;
+        mNdefPush = ndefPush;
         mNfcAdapter = NfcAdapter.getDefaultAdapter(context);
 
         if (mNfcAdapter == null) {
             // NFC is not supported
             mCheckbox.setEnabled(false);
-            mZeroClick.setEnabled(false);
+            mNdefPush.setEnabled(false);
             mIntentFilter = null;
             return;
         }
@@ -109,28 +109,28 @@
         case NfcAdapter.STATE_OFF:
             mCheckbox.setChecked(false);
             mCheckbox.setEnabled(true);
-            mZeroClick.setEnabled(false);
-            mZeroClick.setSummary(R.string.zeroclick_off_summary);
+            mNdefPush.setEnabled(false);
+            mNdefPush.setSummary(R.string.ndef_push_settings_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);
+            mNdefPush.setEnabled(true);
+            if (mNfcAdapter.isNdefPushEnabled()) {
+                mNdefPush.setSummary(R.string.ndef_push_on_summary);
             } else {
-                mZeroClick.setSummary(R.string.zeroclick_off_summary);
+                mNdefPush.setSummary(R.string.ndef_push_off_summary);
             }
             break;
         case NfcAdapter.STATE_TURNING_ON:
             mCheckbox.setChecked(true);
             mCheckbox.setEnabled(false);
-            mZeroClick.setEnabled(false);
+            mNdefPush.setEnabled(false);
             break;
         case NfcAdapter.STATE_TURNING_OFF:
             mCheckbox.setChecked(false);
             mCheckbox.setEnabled(false);
-            mZeroClick.setEnabled(false);
+            mNdefPush.setEnabled(false);
             break;
         }
     }
