You can find this inside Android documentation:
For NDEF push to function properly the other NFC device must support either NFC Forum's SNEP (Simple Ndef Exchange Protocol), or Android's "com.android.npp" (Ndef Push Protocol). This was optional on Gingerbread level Android NFC devices, but SNEP is mandatory on Ice-Cream-Sandwich and beyond.
How could you check whether a device is capable of communicating NFC P2P with other devices? Because we have tried to test various sample NFC P2P codes with no success! (NFC tags are working perfectly).
What is currently happening is that both devices make the familiar NFC buzz sound but no data seem to be exchanged.
FYI devices are Sony Xperia Sole/Sola and LG Optimus 4X HD both updated with Android versions 4.0.4 and 4.0.3 correspondingly.
Also note: development is on Gingerbread version, Android API version 10.