Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a94afeb5 authored by Martijn Coenen's avatar Martijn Coenen Committed by Android (Google) Code Review
Browse files

Merge "Unhide new Beam push APIs."

parents e64d1875 20e8dd9f
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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...);
@@ -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);
  }
+1 −2
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import android.net.Uri;
interface INdefPushCallback
{
    NdefMessage createMessage();
    Uri getUri();
    String getMimeType();
    Uri[] getUris();
    void onNdefPushComplete();
}
+37 −20
Original line number Diff line number Diff line
@@ -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");
@@ -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();
        }
    }
@@ -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) {
@@ -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() {
@@ -358,4 +374,5 @@ public final class NfcActivityManager extends INdefPushCallback.Stub
            }
        }
    }

}
+38 −5
Original line number Diff line number Diff line
@@ -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;

@@ -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.
@@ -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);
    }

    /**