Merge "Update JNI to work with latest stack drop." into jb-mr2-dev
diff --git a/src/com/android/nfc/P2pLinkManager.java b/src/com/android/nfc/P2pLinkManager.java
index b25b41d..3915892 100755
--- a/src/com/android/nfc/P2pLinkManager.java
+++ b/src/com/android/nfc/P2pLinkManager.java
@@ -34,9 +34,11 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.net.Uri;
+import android.nfc.BeamShareData;
 import android.nfc.INdefPushCallback;
 import android.nfc.NdefMessage;
 import android.nfc.NdefRecord;
+import android.nfc.NfcAdapter;
 import android.os.AsyncTask;
 import android.os.Handler;
 import android.os.Message;
@@ -191,6 +193,7 @@
     boolean mIsReceiveEnabled;
     NdefMessage mMessageToSend;  // not valid in SEND_STATE_NOTHING_TO_SEND
     Uri[] mUrisToSend;  // not valid in SEND_STATE_NOTHING_TO_SEND
+    int mSendFlags; // not valid in SEND_STATE_NOTHING_TO_SEND
     INdefPushCallback mCallbackNdef;
     String[] mValidCallbackPackages;
     SendTask mSendTask;
@@ -299,9 +302,13 @@
                         // Alternatively, we could have used WKS as a hint to start
                         // the animation, but we are only correctly setting the WKS
                         // since Jelly Bean.
-                        mSendState = SEND_STATE_NEED_CONFIRMATION;
-                        if (DBG) Log.d(TAG, "onP2pSendConfirmationRequested()");
-                        mEventListener.onP2pSendConfirmationRequested();
+                        if ((mSendFlags & NfcAdapter.FLAG_NDEF_PUSH_NO_CONFIRM) != 0) {
+                            mSendState = SEND_STATE_SENDING;
+                        } else {
+                            mSendState = SEND_STATE_NEED_CONFIRMATION;
+                            if (DBG) Log.d(TAG, "onP2pSendConfirmationRequested()");
+                            mEventListener.onP2pSendConfirmationRequested();
+                        }
                         connectLlcpServices();
                     }
                     break;
@@ -367,8 +374,10 @@
 
                 if (callbackValid) {
                     try {
-                        mMessageToSend = mCallbackNdef.createMessage();
-                        mUrisToSend = mCallbackNdef.getUris();
+                        BeamShareData shareData = mCallbackNdef.createBeamShareData();
+                        mMessageToSend = shareData.ndefMessage;
+                        mUrisToSend = shareData.uris;
+                        mSendFlags = shareData.flags;
                         return;
                     } catch (Exception e) {
                         Log.e(TAG, "Failed NDEF callback: " + e.getMessage());