package com.github.skjolber.android.nfc;

import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.NfcAdapter;
import android.os.Parcelable;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class IntentConverter {


    public static Intent convert(Intent input) {

        Intent output = new Intent();

        output.setAction(input.getAction());

        // detect supported types
        if(input.hasExtra(NfcAdapter.EXTRA_NDEF_MESSAGES)) {
            Parcelable[] messages = input.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);

            ArrayList<NdefMessage> list = new ArrayList<>();
            for (int i = 0; i < messages.length; i++) {
                list.add((NdefMessage) messages[i]);
            }

            output.putParcelableArrayListExtra(NfcAdapter.EXTRA_NDEF_MESSAGES, list);
        }

        if(input.hasExtra(NfcAdapter.EXTRA_TAG)) {
            android.nfc.Tag tag = (android.nfc.Tag) input.getParcelableExtra(NfcAdapter.EXTRA_TAG);

            input.putExtra(NfcAdapter.EXTRA_TAG, new TagWrapper(tag));
        }

        if(input.hasExtra(NfcAdapter.EXTRA_AID)) {
            android.nfc.Tag tag = (android.nfc.Tag) input.getParcelableExtra(NfcAdapter.EXTRA_TAG);

            input.putExtra(NfcAdapter.EXTRA_TAG, new TagWrapper(tag));
        }


        if(input.hasExtra(NfcAdapter.EXTRA_ID)) {
            byte[] id = input.getByteArrayExtra(NfcAdapter.EXTRA_ID);

            output.putExtra(NfcAdapter.EXTRA_ID, id);
        }

        // TODO forward all types

        return output;
    }

}

@@ -129,16 +129,42 @@
 dapter;%0A
+import android.os.Bundle;%0A
 import a
@@ -522,24 +522,25 @@
 ESSAGES)) %7B%0A
+%0A
             
@@ -643,199 +643,56 @@
     
-ArrayList%3CNdefMessage%3E list = new ArrayList%3C%3E();%0A            for (int i = 0; i %3C messages.length; i++) %7B%0A                list.add((NdefMessage) messages%5Bi%5D);%0A            %7D%0A%0A            output
+Bundle extras = new Bundle();%0A            extras
 .put
@@ -710,17 +710,8 @@
 rray
-ListExtra
 (Nfc
@@ -743,12 +743,55 @@
 ES, 
-list
+messages);%0A%0A            output.putExtras(extras
 );%0A 
@@ -956,34 +956,35 @@
 );%0A%0A            
-in
+out
 put.putExtra(Nfc
@@ -1102,164 +1102,91 @@
     
-android.nfc.Tag tag = (android.nfc.Tag) input.getParcelableExtra(NfcAdapter.EXTRA_TAG);%0A%0A            input.putExtra(NfcAdapter.EXTRA_TAG, new TagWrapper(tag
+output.putExtra(NfcAdapter.EXTRA_AID, input.getParcelableExtra(NfcAdapter.EXTRA_AID
 ));%0A

Fix intent converter