Share Wifi credentials via NFC tag without special apps

android, android-wifi, nfc, wifi

Solution

There is an official standard for this kind of situation: NFC Forum Connection Handover Technical Specification. However, this is currently not supported by Android. I don't think there is currently any way to transfer WiFi credentials using NFC without the help of a dedicated app.

One way of going about this is to create (or find) an app in the Google Play Store that has the following properties:

- Intent filter for ACTION_NDEF_DISCOVERED and as URI the URL of the app in the Play Store.

- Intent filter for ACTION_NDEF_DISCOVERED and as type some proprietary type (e.g. a MIME type)

Then you can create tags with an NDEF message containing the following NDEF records:

- SmartPoster record with Play Store URI and some descriptive text (e.g. name of the app)

- Record of proprietary type containing the WiFi credentials

- Android Application Record for the app

The 3rd record will make sure that the proper app will always be started or the device user will be redirected to the Play Store to install it. This works only on ICS, however, but the 1st record (combined with the 1st intent filter) serves the same purpose on Gingerbread.

Problem

I am looking for a way to create a NFC-tag that shares the wifi credentials of my network without my guests having to have any special NFC apps on their phone (other than whats coming with the phone). I have been looking at apps and services like NFC Tag Writer, WifiTap, NFC Task Launcher and NFCLabels.com, but it seems to me like it I would need to have the apps on the guest mobile as well to be able to use it, but I am not able to test it as I only have one NFC-enabled phone available. (Yes, I know, twisting my brains for nothing, but heck, weird behaviour is nothing new...) My closest clue is that WifiTap states that: The app processes URIs in the format of wifi://[network ssid]/[wep|wpa|open]/[network key] If this is actually universal this would mean that I could do what I what I want to, but I have not found any confirmation on this. So, how could what I want be done and am I on the right track with the clue from WifiTap?

Original source