1818
1919import android .app .Activity ;
2020import android .app .Application ;
21+ import android .net .Uri ;
2122import android .os .Bundle ;
2223import android .os .RemoteException ;
2324import android .util .Log ;
@@ -107,6 +108,8 @@ class NfcActivityState {
107108 NdefMessage ndefMessage = null ; // static NDEF message
108109 NfcAdapter .CreateNdefMessageCallback ndefMessageCallback = null ;
109110 NfcAdapter .OnNdefPushCompleteCallback onNdefPushCompleteCallback = null ;
111+ Uri uri = null ;
112+ String mimeType = null ;
110113 public NfcActivityState (Activity activity ) {
111114 if (activity .getWindow ().isDestroyed ()) {
112115 throw new IllegalStateException ("activity is already destroyed" );
@@ -121,12 +124,14 @@ public void destroy() {
121124 ndefMessage = null ;
122125 ndefMessageCallback = null ;
123126 onNdefPushCompleteCallback = null ;
127+ uri = null ;
128+ mimeType = null ;
124129 }
125130 @ Override
126131 public String toString () {
127132 StringBuilder s = new StringBuilder ("[" ).append (" " );
128133 s .append (ndefMessage ).append (" " ).append (ndefMessageCallback ).append (" " );
129- s .append (onNdefPushCompleteCallback ).append ("]" );
134+ s .append (onNdefPushCompleteCallback ).append (" " ). append ( uri ). append ( " ]" );
130135 return s .toString ();
131136 }
132137 }
@@ -175,6 +180,19 @@ public NfcActivityManager(NfcAdapter adapter) {
175180 mDefaultEvent = new NfcEvent (mAdapter );
176181 }
177182
183+ public void setNdefPushContentUri (Activity activity , String mimeType , Uri uri ) {
184+ boolean isResumed ;
185+ synchronized (NfcActivityManager .this ) {
186+ NfcActivityState state = getActivityState (activity );
187+ state .uri = uri ;
188+ state .mimeType = mimeType ;
189+ isResumed = state .resumed ;
190+ }
191+ if (isResumed ) {
192+ requestNfcServiceCallback (true );
193+ }
194+ }
195+
178196 public void setNdefPushMessage (Activity activity , NdefMessage message ) {
179197 boolean isResumed ;
180198 synchronized (NfcActivityManager .this ) {
@@ -247,6 +265,26 @@ public NdefMessage createMessage() {
247265 }
248266 }
249267
268+ /** Callback from NFC service, usually on binder thread */
269+ @ Override
270+ public Uri getUri () {
271+ synchronized (NfcActivityManager .this ) {
272+ NfcActivityState state = findResumedActivityState ();
273+ if (state == null ) return null ;
274+
275+ return state .uri ;
276+ }
277+ }
278+ /** Callback from NFC service, usually on binder thread */
279+ @ Override
280+ public String getMimeType () {
281+ synchronized (NfcActivityManager .this ) {
282+ NfcActivityState state = findResumedActivityState ();
283+ if (state == null ) return null ;
284+
285+ return state .mimeType ;
286+ }
287+ }
250288 /** Callback from NFC service, usually on binder thread */
251289 @ Override
252290 public void onNdefPushComplete () {
0 commit comments