summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Hamilton <jham@android.com> 2011-01-18 11:01:05 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2011-01-18 11:01:05 -0800
commit3a223404e7589831a901cb16c5ce97685bc1f3f8 (patch)
tree1bc1fed378cea8d961efdaecfa147fefdc447670
parent524133cc793b5e372cc97c62653281605f57b5b3 (diff)
parent33ff2405581271adf14ed4e45597a3b0b80a46ab (diff)
Merge "New APIs for NDEF Push Protocol." into gingerbread
-rw-r--r--api/current.xml30
-rw-r--r--core/java/android/nfc/INfcAdapter.aidl2
-rw-r--r--core/java/android/nfc/NfcAdapter.java74
3 files changed, 95 insertions, 11 deletions
diff --git a/api/current.xml b/api/current.xml
index 5ecfc8e95266..6abe6bcca43b 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -100802,6 +100802,19 @@
<parameter name="activity" type="android.app.Activity">
</parameter>
</method>
+<method name="disableNdefPushDispatch"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="activity" type="android.app.Activity">
+</parameter>
+</method>
<method name="enableForegroundDispatch"
return="void"
abstract="false"
@@ -100819,6 +100832,21 @@
<parameter name="filters" type="android.content.IntentFilter...">
</parameter>
</method>
+<method name="enableForegroundNdefPush"
+ return="void"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="activity" type="android.app.Activity">
+</parameter>
+<parameter name="msg" type="android.nfc.NdefMessage">
+</parameter>
+</method>
<method name="getDefaultAdapter"
return="android.nfc.NfcAdapter"
abstract="false"
@@ -226756,7 +226784,7 @@
deprecated="not deprecated"
visibility="public"
>
-<parameter name="t" type="T">
+<parameter name="arg0" type="T">
</parameter>
</method>
</interface>
diff --git a/core/java/android/nfc/INfcAdapter.aidl b/core/java/android/nfc/INfcAdapter.aidl
index cb9fc9d05fbe..cfeff523581d 100644
--- a/core/java/android/nfc/INfcAdapter.aidl
+++ b/core/java/android/nfc/INfcAdapter.aidl
@@ -50,6 +50,8 @@ interface INfcAdapter
void enableForegroundDispatch(in ComponentName activity, in PendingIntent intent,
in IntentFilter[] filters);
void disableForegroundDispatch(in ComponentName activity);
+ void enableForegroundNdefPush(in ComponentName activity, in NdefMessage msg);
+ void disableForegroundNdefPush(in ComponentName activity);
// Non-public methods
// TODO: check and complete
diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java
index c0c0462bfe8c..28d53f567f62 100644
--- a/core/java/android/nfc/NfcAdapter.java
+++ b/core/java/android/nfc/NfcAdapter.java
@@ -413,13 +413,6 @@ public final class NfcAdapter {
}
}
- class ForegroundDispatchPausedListener implements OnActivityPausedListener {
- @Override
- public void onPaused(Activity activity) {
- disableForegroundDispatchInternal(activity, true);
- }
- }
-
/**
* Enables foreground dispatching to the given Activity. This will force all NFC Intents that
* match the given filters to be delivered to the activity bypassing the standard dispatch
@@ -438,7 +431,7 @@ public final class NfcAdapter {
throw new NullPointerException();
}
if (!activity.isResumed()) {
- throw new IllegalStateException("Foregorund dispatching can onlly be enabled " +
+ throw new IllegalStateException("Foregorund dispatching can only be enabled " +
"when your activity is resumed");
}
try {
@@ -452,15 +445,24 @@ public final class NfcAdapter {
/**
* Disables foreground activity dispatching setup with
- * {@link #enableForegroundDispatch}. This must be called before the Activity returns from
+ * {@link #enableForegroundDispatch}.
+ *
+ * <p>This must be called before the Activity returns from
* it's <code>onPause()</code> or this method will throw an IllegalStateException.
*
- * This method must be called from the main thread.
+ * <p>This method must be called from the main thread.
*/
public void disableForegroundDispatch(Activity activity) {
disableForegroundDispatchInternal(activity, false);
}
+ class ForegroundDispatchPausedListener implements OnActivityPausedListener {
+ @Override
+ public void onPaused(Activity activity) {
+ disableForegroundDispatchInternal(activity, true);
+ }
+ }
+
void disableForegroundDispatchInternal(Activity activity, boolean force) {
try {
sService.disableForegroundDispatch(activity.getComponentName());
@@ -474,6 +476,58 @@ public final class NfcAdapter {
}
/**
+ * Enable NDEF messages push while this Activity is in the foreground.
+ */
+ public void enableForegroundNdefPush(Activity activity, NdefMessage msg) {
+ if (activity == null || msg == null) {
+ throw new NullPointerException();
+ }
+ if (!activity.isResumed()) {
+ throw new IllegalStateException("Foregorund NDEF push can only be enabled " +
+ "when your activity is resumed");
+ }
+ try {
+ ActivityThread.currentActivityThread().registerOnActivityPausedListener(activity,
+ new ForegroundDispatchPausedListener());
+ sService.enableForegroundNdefPush(activity.getComponentName(), msg);
+ } catch (RemoteException e) {
+ attemptDeadServiceRecovery(e);
+ }
+ }
+
+ /**
+ * Disables foreground NDEF push setup with
+ * {@link #enableForegroundNdefPush}.
+ *
+ * <p>This must be called before the Activity returns from
+ * it's <code>onPause()</code> or this method will throw an IllegalStateException.
+ *
+ * <p>This method must be called from the main thread.
+ */
+ public void disableNdefPushDispatch(Activity activity) {
+ disableForegroundDispatchInternal(activity, false);
+ }
+
+ class ForegroundNdefPushPausedListener implements OnActivityPausedListener {
+ @Override
+ public void onPaused(Activity activity) {
+ disableNdefPushDispatchInternal(activity, true);
+ }
+ }
+
+ void disableNdefPushDispatchInternal(Activity activity, boolean force) {
+ try {
+ sService.disableForegroundNdefPush(activity.getComponentName());
+ if (!force && !activity.isResumed()) {
+ throw new IllegalStateException("You must disable forgeground NDEF push " +
+ "while your activity is still resumed");
+ }
+ } catch (RemoteException e) {
+ attemptDeadServiceRecovery(e);
+ }
+ }
+
+ /**
* Retrieve a TagTechnology object used to interact with a Tag that is
* in field.
* <p>