diff options
| author | 2011-01-18 11:01:05 -0800 | |
|---|---|---|
| committer | 2011-01-18 11:01:05 -0800 | |
| commit | 3a223404e7589831a901cb16c5ce97685bc1f3f8 (patch) | |
| tree | 1bc1fed378cea8d961efdaecfa147fefdc447670 | |
| parent | 524133cc793b5e372cc97c62653281605f57b5b3 (diff) | |
| parent | 33ff2405581271adf14ed4e45597a3b0b80a46ab (diff) | |
Merge "New APIs for NDEF Push Protocol." into gingerbread
| -rw-r--r-- | api/current.xml | 30 | ||||
| -rw-r--r-- | core/java/android/nfc/INfcAdapter.aidl | 2 | ||||
| -rw-r--r-- | core/java/android/nfc/NfcAdapter.java | 74 |
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> |