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() {