Update for NDEF push API change.

Change-Id: I9101e2f756fbaeaa392d9d5f4ebc6523618a8a5c
diff --git a/src/com/android/contacts/NfcHandler.java b/src/com/android/contacts/NfcHandler.java
index e059a3d..e3e94a9 100644
--- a/src/com/android/contacts/NfcHandler.java
+++ b/src/com/android/contacts/NfcHandler.java
@@ -20,13 +20,11 @@
 
 import android.app.Activity;
 import android.content.ContentResolver;
-import android.content.Context;
 import android.net.Uri;
-import android.net.Uri.Builder;
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
 import android.nfc.NfcAdapter;
-import android.provider.ContactsContract;
+import android.nfc.NfcEvent;
 import android.provider.ContactsContract.Contacts;
 
 import android.util.Log;
@@ -43,33 +41,26 @@
   * will be called to create the data to be sent over the link,
   * which is a vCard in this case.
   */
-public class NfcHandler implements NfcAdapter.NdefPushCallback {
-    private NfcAdapter mNfcAdapter;
-    private ContactDetailFragment mContactFragment;
-    private static final String TAG = "ContactsNfcHandler";
+public class NfcHandler implements NfcAdapter.CreateNdefMessageCallback {
+
+    static final String TAG = "ContactNfcHandler";
+
+    final ContactDetailFragment mContactFragment;
+
+    public static void register(Activity activity, ContactDetailFragment contactFragment) {
+        NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity.getApplicationContext());
+        if (adapter == null) {
+            return;  // NFC not available on this device
+        }
+        adapter.setNdefPushMessageCallback(new NfcHandler(contactFragment), activity);
+    }
 
     public NfcHandler(ContactDetailFragment contactFragment) {
         mContactFragment = contactFragment;
-        mNfcAdapter = NfcAdapter.getDefaultAdapter(
-                mContactFragment.getActivity());
-    }
-
-    public void onPause() {
-        if (mNfcAdapter != null) {
-            mNfcAdapter.disableForegroundNdefPush(
-                    mContactFragment.getActivity());
-        }
-    }
-
-    public void onResume() {
-        if (mNfcAdapter != null) {
-            mNfcAdapter.enableForegroundNdefPush(
-                    mContactFragment.getActivity(), this);
-        }
     }
 
     @Override
-    public NdefMessage createMessage() {
+    public NdefMessage createNdefMessage(NfcEvent event) {
         // Get the current contact URI
         Uri contactUri = mContactFragment.getUri();
         ContentResolver resolver = mContactFragment.getActivity().getContentResolver();
@@ -100,8 +91,4 @@
             return null;
         }
     }
-
-    @Override
-    public void onMessagePushed() {
-    }
 }
diff --git a/src/com/android/contacts/detail/ContactDetailFragment.java b/src/com/android/contacts/detail/ContactDetailFragment.java
index b2e20ca..0e3f100 100644
--- a/src/com/android/contacts/detail/ContactDetailFragment.java
+++ b/src/com/android/contacts/detail/ContactDetailFragment.java
@@ -137,7 +137,6 @@
     private OnScrollListener mVerticalScrollListener;
     private Uri mLookupUri;
     private Listener mListener;
-    private NfcHandler mNfcHandler;
 
     private ContactLoader.Result mContactData;
     private ImageView mStaticPhotoView;
@@ -239,7 +238,6 @@
             mLookupUri = savedInstanceState.getParcelable(KEY_CONTACT_URI);
             mListState = savedInstanceState.getParcelable(KEY_LIST_STATE);
         }
-        mNfcHandler = new NfcHandler(this);
     }
 
     @Override
@@ -254,13 +252,11 @@
     @Override
     public void onPause() {
         super.onPause();
-        mNfcHandler.onPause();
     }
 
     @Override
     public void onResume() {
         super.onResume();
-        mNfcHandler.onResume();
     }
 
     @Override
diff --git a/src/com/android/contacts/detail/ContactDetailLayoutController.java b/src/com/android/contacts/detail/ContactDetailLayoutController.java
index b26f8eb..6b8829e 100644
--- a/src/com/android/contacts/detail/ContactDetailLayoutController.java
+++ b/src/com/android/contacts/detail/ContactDetailLayoutController.java
@@ -17,10 +17,12 @@
 package com.android.contacts.detail;
 
 import com.android.contacts.ContactLoader;
+import com.android.contacts.NfcHandler;
 import com.android.contacts.R;
 import com.android.contacts.activities.ContactDetailActivity.FragmentKeyListener;
 
 import android.animation.ObjectAnimator;
+import android.app.Activity;
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
 import android.content.Context;
@@ -54,7 +56,7 @@
         TWO_COLUMN, VIEW_PAGER_AND_TAB_CAROUSEL, FRAGMENT_CAROUSEL,
     }
 
-    private final Context mContext;
+    private final Activity mActivity;
     private final LayoutInflater mLayoutInflater;
     private final FragmentManager mFragmentManager;
 
@@ -79,7 +81,7 @@
 
     private LayoutMode mLayoutMode;
 
-    public ContactDetailLayoutController(Context context, Bundle savedState,
+    public ContactDetailLayoutController(Activity activity, Bundle savedState,
             FragmentManager fragmentManager, View viewContainer, ContactDetailFragment.Listener
             contactDetailFragmentListener) {
 
@@ -88,8 +90,8 @@
                     + "without a non-null FragmentManager");
         }
 
-        mContext = context;
-        mLayoutInflater = (LayoutInflater) context.getSystemService(
+        mActivity = activity;
+        mLayoutInflater = (LayoutInflater) activity.getSystemService(
                 Context.LAYOUT_INFLATER_SERVICE);
         mFragmentManager = fragmentManager;
         mContactDetailFragmentListener = contactDetailFragmentListener;
@@ -134,6 +136,7 @@
         }
 
         mDetailFragment.setListener(mContactDetailFragmentListener);
+        NfcHandler.register(mActivity, mDetailFragment);
 
         // Read from savedState if possible
         int currentPageIndex = 0;
@@ -445,7 +448,7 @@
             mTabCarouselAnimator = ObjectAnimator.ofFloat(
                     mTabCarousel, "y", desiredValue).setDuration(75);
             mTabCarouselAnimator.setInterpolator(AnimationUtils.loadInterpolator(
-                    mContext, android.R.anim.accelerate_decelerate_interpolator));
+                    mActivity, android.R.anim.accelerate_decelerate_interpolator));
         }
 
         private void cancelTabCarouselAnimator() {