Skip to content

Commit a94afeb

Browse files
Martijn CoenenAndroid (Google) Code Review
authored andcommitted
Merge "Unhide new Beam push APIs."
2 parents e64d187 + 20e8dd9 commit a94afeb

File tree

4 files changed

+82
-27
lines changed

4 files changed

+82
-27
lines changed

api/current.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12905,6 +12905,8 @@ package android.nfc {
1290512905
method public static android.nfc.NfcAdapter getDefaultAdapter(android.content.Context);
1290612906
method public boolean isEnabled();
1290712907
method public boolean isNdefPushEnabled();
12908+
method public void setBeamPushUris(android.net.Uri[], android.app.Activity);
12909+
method public void setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity);
1290812910
method public void setNdefPushMessage(android.nfc.NdefMessage, android.app.Activity, android.app.Activity...);
1290912911
method public void setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...);
1291012912
method public void setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...);
@@ -12916,6 +12918,10 @@ package android.nfc {
1291612918
field public static final java.lang.String EXTRA_TAG = "android.nfc.extra.TAG";
1291712919
}
1291812920

12921+
public static abstract interface NfcAdapter.CreateBeamUrisCallback {
12922+
method public abstract android.net.Uri[] createBeamUris(android.nfc.NfcEvent);
12923+
}
12924+
1291912925
public static abstract interface NfcAdapter.CreateNdefMessageCallback {
1292012926
method public abstract android.nfc.NdefMessage createNdefMessage(android.nfc.NfcEvent);
1292112927
}

core/java/android/nfc/INdefPushCallback.aidl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ import android.net.Uri;
2525
interface INdefPushCallback
2626
{
2727
NdefMessage createMessage();
28-
Uri getUri();
29-
String getMimeType();
28+
Uri[] getUris();
3029
void onNdefPushComplete();
3130
}

core/java/android/nfc/NfcActivityManager.java

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -108,8 +108,8 @@ class NfcActivityState {
108108
NdefMessage ndefMessage = null; // static NDEF message
109109
NfcAdapter.CreateNdefMessageCallback ndefMessageCallback = null;
110110
NfcAdapter.OnNdefPushCompleteCallback onNdefPushCompleteCallback = null;
111-
Uri uri = null;
112-
String mimeType = null;
111+
NfcAdapter.CreateBeamUrisCallback uriCallback = null;
112+
Uri[] uris = null;
113113
public NfcActivityState(Activity activity) {
114114
if (activity.getWindow().isDestroyed()) {
115115
throw new IllegalStateException("activity is already destroyed");
@@ -128,14 +128,19 @@ public void destroy() {
128128
ndefMessage = null;
129129
ndefMessageCallback = null;
130130
onNdefPushCompleteCallback = null;
131-
uri = null;
132-
mimeType = null;
131+
uriCallback = null;
132+
uris = null;
133133
}
134134
@Override
135135
public String toString() {
136136
StringBuilder s = new StringBuilder("[").append(" ");
137137
s.append(ndefMessage).append(" ").append(ndefMessageCallback).append(" ");
138-
s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]");
138+
s.append(uriCallback).append(" ");
139+
if (uris != null) {
140+
for (Uri uri : uris) {
141+
s.append(onNdefPushCompleteCallback).append(" ").append(uri).append("]");
142+
}
143+
}
139144
return s.toString();
140145
}
141146
}
@@ -184,12 +189,25 @@ public NfcActivityManager(NfcAdapter adapter) {
184189
mDefaultEvent = new NfcEvent(mAdapter);
185190
}
186191

187-
public void setNdefPushContentUri(Activity activity, String mimeType, Uri uri) {
192+
public void setNdefPushContentUri(Activity activity, Uri[] uris) {
193+
boolean isResumed;
194+
synchronized (NfcActivityManager.this) {
195+
NfcActivityState state = getActivityState(activity);
196+
state.uris = uris;
197+
isResumed = state.resumed;
198+
}
199+
if (isResumed) {
200+
requestNfcServiceCallback(true);
201+
}
202+
}
203+
204+
205+
public void setNdefPushContentUriCallback(Activity activity,
206+
NfcAdapter.CreateBeamUrisCallback callback) {
188207
boolean isResumed;
189208
synchronized (NfcActivityManager.this) {
190209
NfcActivityState state = getActivityState(activity);
191-
state.uri = uri;
192-
state.mimeType = mimeType;
210+
state.uriCallback = callback;
193211
isResumed = state.resumed;
194212
}
195213
if (isResumed) {
@@ -271,24 +289,22 @@ public NdefMessage createMessage() {
271289

272290
/** Callback from NFC service, usually on binder thread */
273291
@Override
274-
public Uri getUri() {
292+
public Uri[] getUris() {
293+
Uri[] uris;
294+
NfcAdapter.CreateBeamUrisCallback callback;
275295
synchronized (NfcActivityManager.this) {
276296
NfcActivityState state = findResumedActivityState();
277297
if (state == null) return null;
278-
279-
return state.uri;
298+
uris = state.uris;
299+
callback = state.uriCallback;
280300
}
281-
}
282-
/** Callback from NFC service, usually on binder thread */
283-
@Override
284-
public String getMimeType() {
285-
synchronized (NfcActivityManager.this) {
286-
NfcActivityState state = findResumedActivityState();
287-
if (state == null) return null;
288-
289-
return state.mimeType;
301+
if (callback != null) {
302+
return callback.createBeamUris(mDefaultEvent);
303+
} else {
304+
return uris;
290305
}
291306
}
307+
292308
/** Callback from NFC service, usually on binder thread */
293309
@Override
294310
public void onNdefPushComplete() {
@@ -358,4 +374,5 @@ public void onActivityDestroyed(Activity activity) {
358374
}
359375
}
360376
}
377+
361378
}

core/java/android/nfc/NfcAdapter.java

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,27 @@ public final class NfcAdapter {
203203
/** @hide */
204204
public static final int STATE_TURNING_OFF = 4;
205205

206+
/** @hide */
207+
public static final String ACTION_HANDOVER_TRANSFER_STARTED =
208+
"android.nfc.action.HANDOVER_TRANSFER_STARTED";
209+
210+
/** @hide */
211+
public static final String ACTION_HANDOVER_TRANSFER_DONE =
212+
"android.nfc.action.HANDOVER_TRANSFER_DONE";
213+
214+
/** @hide */
215+
public static final String EXTRA_HANDOVER_TRANSFER_STATUS =
216+
"android.nfc.extra.HANDOVER_TRANSFER_STATUS";
217+
218+
/** @hide */
219+
public static final int HANDOVER_TRANSFER_STATUS_SUCCESS = 0;
220+
/** @hide */
221+
public static final int HANDOVER_TRANSFER_STATUS_FAILURE = 1;
222+
223+
/** @hide */
224+
public static final String EXTRA_HANDOVER_TRANSFER_URI =
225+
"android.nfc.extra.HANDOVER_TRANSFER_URI";
226+
206227
// Guarded by NfcAdapter.class
207228
static boolean sIsInitialized = false;
208229

@@ -281,6 +302,12 @@ public interface CreateNdefMessageCallback {
281302
public NdefMessage createNdefMessage(NfcEvent event);
282303
}
283304

305+
306+
// TODO javadoc
307+
public interface CreateBeamUrisCallback {
308+
public Uri[] createBeamUris(NfcEvent event);
309+
}
310+
284311
/**
285312
* Helper to check if this device has FEATURE_NFC, but without using
286313
* a context.
@@ -556,16 +583,22 @@ public boolean disable() {
556583
}
557584
}
558585

559-
//TODO: Consider a callback alternative
560-
//TOOD: See if we get rid of mimeType
561586
//TODO: make sure NFC service has permission for URI
587+
//TODO: see if we will eventually support multiple URIs
562588
//TODO: javadoc
563-
/** @hide */
564-
public void setBeamPushUri(String mimeType, Uri uri, Activity activity) {
589+
public void setBeamPushUris(Uri[] uris, Activity activity) {
590+
if (activity == null) {
591+
throw new NullPointerException("activity cannot be null");
592+
}
593+
mNfcActivityManager.setNdefPushContentUri(activity, uris);
594+
}
595+
596+
// TODO javadoc
597+
public void setBeamPushUrisCallback(CreateBeamUrisCallback callback, Activity activity) {
565598
if (activity == null) {
566599
throw new NullPointerException("activity cannot be null");
567600
}
568-
mNfcActivityManager.setNdefPushContentUri(activity, mimeType, uri);
601+
mNfcActivityManager.setNdefPushContentUriCallback(activity, callback);
569602
}
570603

571604
/**

0 commit comments

Comments
 (0)