Android - NFC Guide Tutorial


NFC stands for Near Field Communication, and as the name implies it provides a wireless communication mechanism between two compatible devices. NFC is a short range wireless technology having a range of 4cm or less for two devices to share data.

How It Works

Like Bluetooth and WiFi, and all manner of other wireless signals, NFC works on the principle of sending information over radio waves. Through NFC data is send through electromagnetic induction between two devices.

NFC works on the bases of tags , it allows you to share some amount of data between an NFC tag and an android powered device or between two android powered devices. Tags have various set of complexities. The Data stored in the tag can be written in a variety of formats, but android APIs are based around a NFC standard called as NFC Data Exchange Format(NDEF)..

The transmission frequency for data across NFC is 13.56 megahertz, and data can be sent at either 106, 212 or 424 kilobits per second, which is quick enough for a range of data transfers from contact details to swapping pictures, songs and videos.

Android powered devices with NFC supports following three main modes of operations −

Three Modes of Operation

  • Reader/Writer Mode:

  • It allows the NFC device to read or write passive NFC tags.

  • P2P mode:

  • This mode allows NFC device to exchange data with other NFC peers.

  • Card emulation mode:

  • It allows the NFC device itself to act as an NFC card, so it can be accessed by an external NFC reader.

How it works with Android:

To get the permission to access NFC Hardware, add the following permission in your Android.Manifest file.

<uses-sdk android:minSdkVersion="10"/>

First thing to note is that not all android powered devices provide NFC technology. So to make sure that your application shows up in google play for only those devices that have NFC Hardware, add the following line in your Android.Manifest file.

<uses-feature android:name="android.hardware.nfc" android:required="true"/>

Android provides a android.nfc package for communicating with another device. This package contains following classes −


It represents an immutable NDEF Message. .


It represents an immutable NDEF Record.


It represents the local NFC adapter.


It wraps information associated with any NFC event.


It is a high level manager used to obtain an instance of an NfcAdapter.


It represents an NFC tag that has been discovered.

NFC tags system works in android with the help of some intent filters that are listed below:

Sr.NoFilters & Features

This intent is used to start an Activity when a tag contains an NDEF payload.


This intent is used to start an activity if the tag does not contain NDEF data, but is of known technology.


This intent is started if no activities handle the ACTION_NDEF_DISCOVERED or ACTION_TECH_DISCOVERED intents.

To code an application that uses NFC technology is complex so don't use it in your app unless necessary. The use of NFC is not common in devices but it is getting popular. Let's see what is the future of this technology −

Future Applications

With this technology growing day by day and due to introduction of contact less payment systems this technology is getting a boom. A service known as Google Wallet is already introduced in the US which purpose is to make our smartphones a viable alternative to credit and transport cards.