Loading api/current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -12905,6 +12905,8 @@ package android.nfc { method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context); method public boolean isEnabled(); method public boolean isNdefPushEnabled(); method public void setBeamPushUris(android.net.Uri[], android.app.Activity); method public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity); method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...); method public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...); method public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...); Loading @@ -12916,6 +12918,10 @@ package android.nfc { field public static final java.lang.String EXTRA_TAG = "android.nfc.extra.TAG"; } public static abstract interface NfcAdapter.CreateBeamUrisCallback { method public abstract android.net.Uri[] createBeamUris(android.nfc.NfcEvent); } public static abstract interface NfcAdapter.CreateNdefMessageCallback { method public abstract android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent); } core/java/android/nfc/INdefPushCallback.aidl +1 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.net.Uri; interface INdefPushCallback { NdefMessage createMessage(); Uri getUri(); String getMimeType(); Uri[] getUris(); void onNdefPushComplete(); } core/java/android/nfc/NfcActivityManager.java +37 −20 Original line number Diff line number Diff line Loading @@ -108,8 +108,8 @@ public final class NfcActivityManager extends INdefPushCallback.Stub NdefMessage ndefMessage = null; // static NDEF message NfcAdapter.CreateNdefMessageCallback ndefMessageCallback = null; NfcAdapter.OnNdefPushCompleteCallback onNdefPushCompleteCallback = null; Uri uri = null; String mimeType = null; NfcAdapter.CreateBeamUrisCallback uriCallback = null; Uri[] uris = null; public NfcActivityState(Activity activity) { if (activity.getWindow().isDestroyed()) { throw new IllegalStateException("activity is already destroyed"); Loading @@ -128,14 +128,19 @@ public final class NfcActivityManager extends INdefPushCallback.Stub ndefMessage = null; ndefMessageCallback = null; onNdefPushCompleteCallback = null; uri = null; mimeType = null; uriCallback = null; uris = null; } @Override public String toString() { StringBuilder s = new StringBuilder("[").append(" "); s.append(ndefMessage).append(" ").append(ndefMessageCallback).append(" "); s.append(uriCallback).append(" "); if (uris != null) { for (Uri uri : uris) { s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]"); } } return s.toString(); } } Loading Loading @@ -184,12 +189,25 @@ public final class NfcActivityManager extends INdefPushCallback.Stub mDefaultEvent = new NfcEvent(mAdapter); } public void setNdefPushContentUri(Activity activity, String mimeType, Uri uri) { public void setNdefPushContentUri(Activity activity, Uri[] uris) { boolean isResumed; synchronized (NfcActivityManager.this) { NfcActivityState state = getActivityState(activity); state.uris = uris; isResumed = state.resumed; } if (isResumed) { requestNfcServiceCallback(true); } } public void setNdefPushContentUriCallback(Activity activity, NfcAdapter.CreateBeamUrisCallback callback) { boolean isResumed; synchronized (NfcActivityManager.this) { NfcActivityState state = getActivityState(activity); state.uri = uri; state.mimeType = mimeType; state.uriCallback = callback; isResumed = state.resumed; } if (isResumed) { Loading Loading @@ -271,24 +289,22 @@ public final class NfcActivityManager extends INdefPushCallback.Stub /** Callback from NFC service, usually on binder thread */ @Override public Uri getUri() { public Uri[] getUris() { Uri[] uris; NfcAdapter.CreateBeamUrisCallback callback; synchronized (NfcActivityManager.this) { NfcActivityState state = findResumedActivityState(); if (state == null) return null; return state.uri; } uris = state.uris; callback = state.uriCallback; } /** Callback from NFC service, usually on binder thread */ @Override public String getMimeType() { synchronized (NfcActivityManager.this) { NfcActivityState state = findResumedActivityState(); if (state == null) return null; return state.mimeType; if (callback != null) { return callback.createBeamUris(mDefaultEvent); } else { return uris; } } /** Callback from NFC service, usually on binder thread */ @Override public void onNdefPushComplete() { Loading Loading @@ -358,4 +374,5 @@ public final class NfcActivityManager extends INdefPushCallback.Stub } } } } core/java/android/nfc/NfcAdapter.java +38 −5 Original line number Diff line number Diff line Loading @@ -203,6 +203,27 @@ public final class NfcAdapter { /** @hide */ public static final int STATE_TURNING_OFF = 4; /** @hide */ public static final String ACTION_HANDOVER_TRANSFER_STARTED = "android.nfc.action.HANDOVER_TRANSFER_STARTED"; /** @hide */ public static final String ACTION_HANDOVER_TRANSFER_DONE = "android.nfc.action.HANDOVER_TRANSFER_DONE"; /** @hide */ public static final String EXTRA_HANDOVER_TRANSFER_STATUS = "android.nfc.extra.HANDOVER_TRANSFER_STATUS"; /** @hide */ public static final int HANDOVER_TRANSFER_STATUS_SUCCESS = 0; /** @hide */ public static final int HANDOVER_TRANSFER_STATUS_FAILURE = 1; /** @hide */ public static final String EXTRA_HANDOVER_TRANSFER_URI = "android.nfc.extra.HANDOVER_TRANSFER_URI"; // Guarded by NfcAdapter.class static boolean sIsInitialized = false; Loading Loading @@ -281,6 +302,12 @@ public final class NfcAdapter { public NdefMessage createNdefMessage(NfcEvent event); } // TODO javadoc public interface CreateBeamUrisCallback { public Uri[] createBeamUris(NfcEvent event); } /** * Helper to check if this device has FEATURE_NFC, but without using * a context. Loading Loading @@ -556,16 +583,22 @@ public final class NfcAdapter { } } //TODO: Consider a callback alternative //TOOD: See if we get rid of mimeType //TODO: make sure NFC service has permission for URI //TODO: see if we will eventually support multiple URIs //TODO: javadoc /** @hide */ public void setBeamPushUri(String mimeType, Uri uri, Activity activity) { public void setBeamPushUris(Uri[] uris, Activity activity) { if (activity == null) { throw new NullPointerException("activity cannot be null"); } mNfcActivityManager.setNdefPushContentUri(activity, uris); } // TODO javadoc public void setBeamPushUrisCallback(CreateBeamUrisCallback callback, Activity activity) { if (activity == null) { throw new NullPointerException("activity cannot be null"); } mNfcActivityManager.setNdefPushContentUri(activity, mimeType, uri); mNfcActivityManager.setNdefPushContentUriCallback(activity, callback); } /** Loading Loading
api/current.txt +6 −0 Original line number Diff line number Diff line Loading @@ -12905,6 +12905,8 @@ package android.nfc { method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context); method public boolean isEnabled(); method public boolean isNdefPushEnabled(); method public void setBeamPushUris(android.net.Uri[], android.app.Activity); method public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity); method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...); method public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...); method public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...); Loading @@ -12916,6 +12918,10 @@ package android.nfc { field public static final java.lang.String EXTRA_TAG = "android.nfc.extra.TAG"; } public static abstract interface NfcAdapter.CreateBeamUrisCallback { method public abstract android.net.Uri[] createBeamUris(android.nfc.NfcEvent); } public static abstract interface NfcAdapter.CreateNdefMessageCallback { method public abstract android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent); }
core/java/android/nfc/INdefPushCallback.aidl +1 −2 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.net.Uri; interface INdefPushCallback { NdefMessage createMessage(); Uri getUri(); String getMimeType(); Uri[] getUris(); void onNdefPushComplete(); }
core/java/android/nfc/NfcActivityManager.java +37 −20 Original line number Diff line number Diff line Loading @@ -108,8 +108,8 @@ public final class NfcActivityManager extends INdefPushCallback.Stub NdefMessage ndefMessage = null; // static NDEF message NfcAdapter.CreateNdefMessageCallback ndefMessageCallback = null; NfcAdapter.OnNdefPushCompleteCallback onNdefPushCompleteCallback = null; Uri uri = null; String mimeType = null; NfcAdapter.CreateBeamUrisCallback uriCallback = null; Uri[] uris = null; public NfcActivityState(Activity activity) { if (activity.getWindow().isDestroyed()) { throw new IllegalStateException("activity is already destroyed"); Loading @@ -128,14 +128,19 @@ public final class NfcActivityManager extends INdefPushCallback.Stub ndefMessage = null; ndefMessageCallback = null; onNdefPushCompleteCallback = null; uri = null; mimeType = null; uriCallback = null; uris = null; } @Override public String toString() { StringBuilder s = new StringBuilder("[").append(" "); s.append(ndefMessage).append(" ").append(ndefMessageCallback).append(" "); s.append(uriCallback).append(" "); if (uris != null) { for (Uri uri : uris) { s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]"); } } return s.toString(); } } Loading Loading @@ -184,12 +189,25 @@ public final class NfcActivityManager extends INdefPushCallback.Stub mDefaultEvent = new NfcEvent(mAdapter); } public void setNdefPushContentUri(Activity activity, String mimeType, Uri uri) { public void setNdefPushContentUri(Activity activity, Uri[] uris) { boolean isResumed; synchronized (NfcActivityManager.this) { NfcActivityState state = getActivityState(activity); state.uris = uris; isResumed = state.resumed; } if (isResumed) { requestNfcServiceCallback(true); } } public void setNdefPushContentUriCallback(Activity activity, NfcAdapter.CreateBeamUrisCallback callback) { boolean isResumed; synchronized (NfcActivityManager.this) { NfcActivityState state = getActivityState(activity); state.uri = uri; state.mimeType = mimeType; state.uriCallback = callback; isResumed = state.resumed; } if (isResumed) { Loading Loading @@ -271,24 +289,22 @@ public final class NfcActivityManager extends INdefPushCallback.Stub /** Callback from NFC service, usually on binder thread */ @Override public Uri getUri() { public Uri[] getUris() { Uri[] uris; NfcAdapter.CreateBeamUrisCallback callback; synchronized (NfcActivityManager.this) { NfcActivityState state = findResumedActivityState(); if (state == null) return null; return state.uri; } uris = state.uris; callback = state.uriCallback; } /** Callback from NFC service, usually on binder thread */ @Override public String getMimeType() { synchronized (NfcActivityManager.this) { NfcActivityState state = findResumedActivityState(); if (state == null) return null; return state.mimeType; if (callback != null) { return callback.createBeamUris(mDefaultEvent); } else { return uris; } } /** Callback from NFC service, usually on binder thread */ @Override public void onNdefPushComplete() { Loading Loading @@ -358,4 +374,5 @@ public final class NfcActivityManager extends INdefPushCallback.Stub } } } }
core/java/android/nfc/NfcAdapter.java +38 −5 Original line number Diff line number Diff line Loading @@ -203,6 +203,27 @@ public final class NfcAdapter { /** @hide */ public static final int STATE_TURNING_OFF = 4; /** @hide */ public static final String ACTION_HANDOVER_TRANSFER_STARTED = "android.nfc.action.HANDOVER_TRANSFER_STARTED"; /** @hide */ public static final String ACTION_HANDOVER_TRANSFER_DONE = "android.nfc.action.HANDOVER_TRANSFER_DONE"; /** @hide */ public static final String EXTRA_HANDOVER_TRANSFER_STATUS = "android.nfc.extra.HANDOVER_TRANSFER_STATUS"; /** @hide */ public static final int HANDOVER_TRANSFER_STATUS_SUCCESS = 0; /** @hide */ public static final int HANDOVER_TRANSFER_STATUS_FAILURE = 1; /** @hide */ public static final String EXTRA_HANDOVER_TRANSFER_URI = "android.nfc.extra.HANDOVER_TRANSFER_URI"; // Guarded by NfcAdapter.class static boolean sIsInitialized = false; Loading Loading @@ -281,6 +302,12 @@ public final class NfcAdapter { public NdefMessage createNdefMessage(NfcEvent event); } // TODO javadoc public interface CreateBeamUrisCallback { public Uri[] createBeamUris(NfcEvent event); } /** * Helper to check if this device has FEATURE_NFC, but without using * a context. Loading Loading @@ -556,16 +583,22 @@ public final class NfcAdapter { } } //TODO: Consider a callback alternative //TOOD: See if we get rid of mimeType //TODO: make sure NFC service has permission for URI //TODO: see if we will eventually support multiple URIs //TODO: javadoc /** @hide */ public void setBeamPushUri(String mimeType, Uri uri, Activity activity) { public void setBeamPushUris(Uri[] uris, Activity activity) { if (activity == null) { throw new NullPointerException("activity cannot be null"); } mNfcActivityManager.setNdefPushContentUri(activity, uris); } // TODO javadoc public void setBeamPushUrisCallback(CreateBeamUrisCallback callback, Activity activity) { if (activity == null) { throw new NullPointerException("activity cannot be null"); } mNfcActivityManager.setNdefPushContentUri(activity, mimeType, uri); mNfcActivityManager.setNdefPushContentUriCallback(activity, callback); } /** Loading