Update to the new APIs.
Change-Id: I8aed612159d369dd9360ba3bc4aa7ee9c008c718
diff --git a/Android.mk b/Android.mk
index dd1d1b1..7fa60a0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -10,7 +10,7 @@
LOCAL_PACKAGE_NAME := Tag
-LOCAL_SDK_VERSION := current
+#LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 9d109ed..2cbc300 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -47,7 +47,7 @@
android:launchMode="singleTop"
>
<intent-filter>
- <action android:name="android.nfc.action.NDEF_TAG_DISCOVERED"/>
+ <action android:name="android.nfc.action.TAG_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
diff --git a/canon/src/com/android/apps/tagcanon/TagCanon.java b/canon/src/com/android/apps/tagcanon/TagCanon.java
index 508f81e..2367342 100644
--- a/canon/src/com/android/apps/tagcanon/TagCanon.java
+++ b/canon/src/com/android/apps/tagcanon/TagCanon.java
@@ -159,8 +159,9 @@
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
TagDescription description = mAdapter.getItem(position);
- Intent intent = new Intent(NfcAdapter.ACTION_NDEF_TAG_DISCOVERED);
+ Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
intent.putExtra(NfcAdapter.EXTRA_TAG, description.tag);
+ intent.putExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, description.tag.getNdefMessages());
startActivity(intent);
}
}
diff --git a/src/com/android/apps/tag/TagService.java b/src/com/android/apps/tag/TagService.java
index 1a2c433..dee2f00 100644
--- a/src/com/android/apps/tag/TagService.java
+++ b/src/com/android/apps/tag/TagService.java
@@ -26,13 +26,13 @@
import android.content.Intent;
import android.net.Uri;
import android.nfc.NdefMessage;
-import android.nfc.NdefTag;
+import android.os.Parcelable;
import android.util.Log;
public class TagService extends IntentService {
private static final String TAG = "TagService";
- private static final String EXTRA_SAVE_TAG = "tag";
+ private static final String EXTRA_SAVE_MSGS = "msgs";
private static final String EXTRA_DELETE_URI = "delete";
private static final String EXTRA_STAR_URI = "set_star";
private static final String EXTRA_UNSTAR_URI = "remove_star";
@@ -47,10 +47,9 @@
@Override
public void onHandleIntent(Intent intent) {
- if (intent.hasExtra(EXTRA_SAVE_TAG)) {
-
- NdefTag tag = (NdefTag) intent.getParcelableExtra(EXTRA_SAVE_TAG);
- NdefMessage msg = tag.getNdefMessages()[0];
+ if (intent.hasExtra(EXTRA_SAVE_MSGS)) {
+ Parcelable[] msgs = intent.getParcelableArrayExtra(EXTRA_SAVE_MSGS);
+ NdefMessage msg = (NdefMessage) msgs[0];
ContentValues values = NdefMessages.toValues(this, msg, false, System.currentTimeMillis());
Uri uri = getContentResolver().insert(NdefMessages.CONTENT_URI, values);
@@ -92,9 +91,10 @@
}
}
- public static void saveTag(Context context, NdefTag tag, boolean starred, PendingIntent pending) {
+ public static void saveMessages(Context context, NdefMessage[] msgs, boolean starred,
+ PendingIntent pending) {
Intent intent = new Intent(context, TagService.class);
- intent.putExtra(TagService.EXTRA_SAVE_TAG, tag);
+ intent.putExtra(TagService.EXTRA_SAVE_MSGS, msgs);
intent.putExtra(TagService.EXTRA_STARRED, starred);
intent.putExtra(TagService.EXTRA_PENDING_INTENT, pending);
context.startService(intent);
diff --git a/src/com/android/apps/tag/TagViewer.java b/src/com/android/apps/tag/TagViewer.java
index 72aef85..882beeb 100644
--- a/src/com/android/apps/tag/TagViewer.java
+++ b/src/com/android/apps/tag/TagViewer.java
@@ -23,9 +23,7 @@
import android.app.Activity;
import android.app.PendingIntent;
-import android.content.ComponentName;
import android.content.Intent;
-import android.content.ServiceConnection;
import android.content.res.AssetFileDescriptor;
import android.database.Cursor;
import android.media.AudioManager;
@@ -33,11 +31,12 @@
import android.net.Uri;
import android.nfc.FormatException;
import android.nfc.NdefMessage;
+import android.nfc.NdefRecord;
import android.nfc.NdefTag;
import android.nfc.NfcAdapter;
import android.os.AsyncTask;
import android.os.Bundle;
-import android.os.IBinder;
+import android.os.Parcelable;
import android.text.format.DateUtils;
import android.util.Log;
import android.view.LayoutInflater;
@@ -134,17 +133,27 @@
void resolveIntent(Intent intent) {
// Parse the intent
String action = intent.getAction();
- if (NfcAdapter.ACTION_NDEF_TAG_DISCOVERED.equals(action)) {
+ if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) {
// When a tag is discovered we send it to the service to be save. We
// include a PendingIntent for the service to call back onto. This
// will cause this activity to be restarted with onNewIntent(). At
// that time we read it from the database and view it.
-
- NdefTag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
-
- PendingIntent pending = getPendingIntent();
-
- TagService.saveTag(this, tag, false, pending);
+ Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
+ NdefMessage[] msgs;
+ if (rawMsgs != null) {
+ // stupid java, need to cast one-by-one
+ msgs = new NdefMessage[rawMsgs.length];
+ for (int i=0; i<rawMsgs.length; i++) {
+ msgs[i] = (NdefMessage) rawMsgs[i];
+ }
+ } else {
+ // Unknown tag type
+ byte[] empty = new byte[] {};
+ NdefRecord record = new NdefRecord(NdefRecord.TNF_UNKNOWN, empty, empty, empty);
+ NdefMessage msg = new NdefMessage(new NdefRecord[] { record });
+ msgs = new NdefMessage[] { msg };
+ }
+ TagService.saveMessages(this, msgs, false, getPendingIntent());
// Setup the views
setTitle(R.string.title_scanned_tag);
diff --git a/src/com/android/apps/tag/provider/TagProvider.java b/src/com/android/apps/tag/provider/TagProvider.java
index b8bdb9e..3b85825 100644
--- a/src/com/android/apps/tag/provider/TagProvider.java
+++ b/src/com/android/apps/tag/provider/TagProvider.java
@@ -53,13 +53,8 @@
private static final int NDEF_MESSAGES = 1000;
private static final int NDEF_MESSAGES_ID = 1001;
- private static final int NDEF_RECORDS = 2000;
- private static final int NDEF_RECORDS_ID = 2001;
private static final int NDEF_MESSAGES_ID_MIME = 2002;
- private static final int NDEF_TAGS = 3000;
- private static final int NDEF_TAGS_ID = 3001;
-
private static final UriMatcher MATCHER;