Add NFC support into QC

Modified NfcHandler to be more generic. Didn't bother
updating the ContactDetailLayoutController to use the
modified NfcHandler, since ContactDetailLayoutController
is completely dead code.
 
Bug: 15911911
Change-Id: I91f294f1576cba02e68cb442d26dcf8d87c8a735
diff --git a/src/com/android/contacts/NfcHandler.java b/src/com/android/contacts/NfcHandler.java
index 3cd4b08..07b3f06 100644
--- a/src/com/android/contacts/NfcHandler.java
+++ b/src/com/android/contacts/NfcHandler.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.content.ContentResolver;
+import android.content.Context;
 import android.net.Uri;
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
@@ -27,8 +28,6 @@
 import android.provider.ContactsContract.Profile;
 import android.util.Log;
 
-import com.android.contacts.detail.ContactDetailFragment;
-
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -45,27 +44,28 @@
 
     private static final String TAG = "ContactNfcHandler";
     private static final String PROFILE_LOOKUP_KEY = "profile";
-    private final ContactDetailFragment mContactFragment;
+    private final Context mContext;
+    private final Uri mContactUri;
 
-    public static void register(Activity activity, ContactDetailFragment contactFragment) {
+    /* Register NFC handler. This should be called in activities' onCreate(), or similar methods */
+    public static void register(Activity activity, Uri contactUri) {
         NfcAdapter adapter = NfcAdapter.getDefaultAdapter(activity.getApplicationContext());
         if (adapter == null) {
             return;  // NFC not available on this device
         }
-        adapter.setNdefPushMessageCallback(new NfcHandler(contactFragment), activity);
+        adapter.setNdefPushMessageCallback(new NfcHandler(activity, contactUri), activity);
     }
 
-    public NfcHandler(ContactDetailFragment contactFragment) {
-        mContactFragment = contactFragment;
+    public NfcHandler(Context context, Uri contactUri) {
+        mContext = context;
+        mContactUri = contactUri;
     }
 
     @Override
     public NdefMessage createNdefMessage(NfcEvent event) {
-        // Get the current contact URI
-        Uri contactUri = mContactFragment.getUri();
-        ContentResolver resolver = mContactFragment.getActivity().getContentResolver();
-        if (contactUri != null) {
-            final String lookupKey = Uri.encode(contactUri.getPathSegments().get(2));
+        ContentResolver resolver = mContext.getContentResolver();
+        if (mContactUri != null) {
+            final String lookupKey = Uri.encode(mContactUri.getPathSegments().get(2));
             final Uri shareUri;
             // TODO find out where to get this constant from, or find another way
             // of determining this.