Loading core/java/android/nfc/INdefPushCallback.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.nfc; import android.nfc.NdefMessage; import android.net.Uri; /** * @hide Loading @@ -24,5 +25,7 @@ import android.nfc.NdefMessage; interface INdefPushCallback { NdefMessage createMessage(); Uri getUri(); String getMimeType(); void onNdefPushComplete(); } core/java/android/nfc/NfcActivityManager.java +39 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.nfc; import android.app.Activity; import android.app.Application; import android.net.Uri; import android.os.Bundle; import android.os.RemoteException; import android.util.Log; Loading Loading @@ -107,6 +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; public NfcActivityState(Activity activity) { if (activity.getWindow().isDestroyed()) { throw new IllegalStateException("activity is already destroyed"); Loading @@ -121,12 +124,14 @@ public final class NfcActivityManager extends INdefPushCallback.Stub ndefMessage = null; ndefMessageCallback = null; onNdefPushCompleteCallback = null; uri = null; mimeType = null; } @Override public String toString() { StringBuilder s = new StringBuilder("[").append(" "); s.append(ndefMessage).append(" ").append(ndefMessageCallback).append(" "); s.append(onNdefPushCompleteCallback).append("]"); s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]"); return s.toString(); } } Loading Loading @@ -175,6 +180,19 @@ public final class NfcActivityManager extends INdefPushCallback.Stub mDefaultEvent = new NfcEvent(mAdapter); } public void setNdefPushContentUri(Activity activity, String mimeType, Uri uri) { boolean isResumed; synchronized (NfcActivityManager.this) { NfcActivityState state = getActivityState(activity); state.uri = uri; state.mimeType = mimeType; isResumed = state.resumed; } if (isResumed) { requestNfcServiceCallback(true); } } public void setNdefPushMessage(Activity activity, NdefMessage message) { boolean isResumed; synchronized (NfcActivityManager.this) { Loading Loading @@ -247,6 +265,26 @@ public final class NfcActivityManager extends INdefPushCallback.Stub } } /** Callback from NFC service, usually on binder thread */ @Override public Uri getUri() { synchronized (NfcActivityManager.this) { NfcActivityState state = findResumedActivityState(); if (state == null) return null; return state.uri; } } /** 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; } } /** Callback from NFC service, usually on binder thread */ @Override public void onNdefPushComplete() { Loading core/java/android/nfc/NfcAdapter.java +13 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.content.Context; import android.content.IntentFilter; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.net.Uri; import android.nfc.tech.MifareClassic; import android.nfc.tech.Ndef; import android.nfc.tech.NfcA; Loading Loading @@ -555,6 +556,18 @@ 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: javadoc /** @hide */ public void setBeamPushUri(String mimeType, Uri uri, Activity activity) { if (activity == null) { throw new NullPointerException("activity cannot be null"); } mNfcActivityManager.setNdefPushContentUri(activity, mimeType, uri); } /** * Set a static {@link NdefMessage} to send using Android Beam (TM). * Loading Loading
core/java/android/nfc/INdefPushCallback.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package android.nfc; import android.nfc.NdefMessage; import android.net.Uri; /** * @hide Loading @@ -24,5 +25,7 @@ import android.nfc.NdefMessage; interface INdefPushCallback { NdefMessage createMessage(); Uri getUri(); String getMimeType(); void onNdefPushComplete(); }
core/java/android/nfc/NfcActivityManager.java +39 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package android.nfc; import android.app.Activity; import android.app.Application; import android.net.Uri; import android.os.Bundle; import android.os.RemoteException; import android.util.Log; Loading Loading @@ -107,6 +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; public NfcActivityState(Activity activity) { if (activity.getWindow().isDestroyed()) { throw new IllegalStateException("activity is already destroyed"); Loading @@ -121,12 +124,14 @@ public final class NfcActivityManager extends INdefPushCallback.Stub ndefMessage = null; ndefMessageCallback = null; onNdefPushCompleteCallback = null; uri = null; mimeType = null; } @Override public String toString() { StringBuilder s = new StringBuilder("[").append(" "); s.append(ndefMessage).append(" ").append(ndefMessageCallback).append(" "); s.append(onNdefPushCompleteCallback).append("]"); s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]"); return s.toString(); } } Loading Loading @@ -175,6 +180,19 @@ public final class NfcActivityManager extends INdefPushCallback.Stub mDefaultEvent = new NfcEvent(mAdapter); } public void setNdefPushContentUri(Activity activity, String mimeType, Uri uri) { boolean isResumed; synchronized (NfcActivityManager.this) { NfcActivityState state = getActivityState(activity); state.uri = uri; state.mimeType = mimeType; isResumed = state.resumed; } if (isResumed) { requestNfcServiceCallback(true); } } public void setNdefPushMessage(Activity activity, NdefMessage message) { boolean isResumed; synchronized (NfcActivityManager.this) { Loading Loading @@ -247,6 +265,26 @@ public final class NfcActivityManager extends INdefPushCallback.Stub } } /** Callback from NFC service, usually on binder thread */ @Override public Uri getUri() { synchronized (NfcActivityManager.this) { NfcActivityState state = findResumedActivityState(); if (state == null) return null; return state.uri; } } /** 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; } } /** Callback from NFC service, usually on binder thread */ @Override public void onNdefPushComplete() { Loading
core/java/android/nfc/NfcAdapter.java +13 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.content.Context; import android.content.IntentFilter; import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.net.Uri; import android.nfc.tech.MifareClassic; import android.nfc.tech.Ndef; import android.nfc.tech.NfcA; Loading Loading @@ -555,6 +556,18 @@ 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: javadoc /** @hide */ public void setBeamPushUri(String mimeType, Uri uri, Activity activity) { if (activity == null) { throw new NullPointerException("activity cannot be null"); } mNfcActivityManager.setNdefPushContentUri(activity, mimeType, uri); } /** * Set a static {@link NdefMessage} to send using Android Beam (TM). * Loading