[Sprint Samsung Galaxy S III] stealthdave:
UPDATE!!! There's a new XPosed Framework module in town that makes this whole thread obsolete. Check out the new NFC Unlock module, forked from the NFC LockScreenOff Enabler module already used in this project. Way simpler, fewer moving parts to configure, and works well. Check it out. Otherwise, this has been a fun way to learn how to use Tasker! :D Thanks, all!

Original Post

This is a guide to show you how to set up your phone to be unlocked by an NFC tag. There are several other threads on the subject for various phones and carriers, but it took me several weeks worth of research and testing to come up with something that actually worked on my phone, and this tutorial is the culmination of that effort. In theory, it should work for a wide variety of ROMs (including Stock), phones and carriers, and even survive ROM updates (provided you maintain root), but I have only tested it on a Sprint Galaxy S3 (model d2spr) that is rooted and running CyanogenMod 10.1.

DISCLAIMER! I am NOT responsible for any damage to your phone, loss of data, use of your phone, or spontaneous sharknadoes that may occur if you try these steps! It worked for me, but I make no guarantees that it will work for you! Back up all your data and your ROM, and use this at your own risk!

HARDWARE REQUIREMENTS

An NFC capable phone, like your Sprint Samsung Galaxy S3 with Root Access enabled

An NFC tag, such as Samsung TecTiles

SOFTWARE REQUIREMENTS

XPosed Framework

ONE of these XPosed Framework plugins:

MoDaCo Toolkit Plugin for the XPosed Framework (NFC Always On or On When Unlocked)

NFCLockscreenoffEnabler.apk for the XPosed Framework (lets you choose between Always On, On When Unlocked OR On At Lockscreen for better battery life)

NFC Task Launcher from the Play Store

Tasker from the play store

Secure Settings Plugin for Tasker

STEP 1: Install the software!

Install all of the software listed above.

Open XPosed Framework and enable the MoDaCo Toolkit OR the NFCLockscreenoffEnabler.apk in the Modules tab

STEP 2: Turn on NFC scanning all the time

Normally, Android only scans for NFC tags when the phone is unlocked. We need to scan for NFC tags when the phone is locked, and in our case, when the screen is off. Open the MoDaCo Toolkit app and check the box to Enable NFC when screen is off under Settings -> Wireless

WARNING!!! Turning on NFC scanning when the screen is off may adversely affect your battery life!

STEP 2 ALTERNATIVE: Turn on NFC scanning at Lockscreen

Open the NFCLockscreenoffEnabler.apk app and select Enable NFC when phone is locked, but the screen is on. This option should be a little easier on your battery. (Thanks to [MENTION=272718]nacron[/MENTION] for finding this!)

STEP 3: Make Secure Settings a Device Administrator

Open Secure Settings and go to the Configuration Menu by tapping the wrench icon in the upper-right hand corner. Once there, check the box next to Device Administrator and select "Activate" on the confirmation screen.

STEP 4: Teach Tasker how to Lock and Unlock your phone

We can either do this the easy way, or the hard way.

Easy Way - Import the Tasks

Download and unzip NFC-Unlock-Tasker-Tasks.zip and copy the enclosed XML files to your phone

Open Tasker and long-press the Tasks tab

Select Import and open the files that you just copied

There is no step 4.

Hard Way - Manually Enter the Tasks

If you don't trust the import function, or just want to learn more about creating tasks in Tasker, you can create the tasks manually.

Open Tasker and select the Tasks tab. Create a new Task by tapping the big "+" sign, name it "LOCK", and add the following actions:

Select Task -> If

Under Condition on the LEFT side of the condition, type TRUN (the variable for Tasks Running)

Tap the Condition Operator icon (the grey button in the middle) and select Doesn't Match, or !~

On the RIGHT side of the condition, type *Unlock*

Under the If statement, select Plugin -> Secure Settings then tap Edit.

Select Keyguard and set the following options:

Select radio button On

Select Plugin -> Secure Settings then tap Edit.

Select Lock Device and set the following options:

Box for Device Admin Enabled is checked

Select Task -> End If

Create a new Task named "Unlock", and add the following actions:

Select Task -> Stop And select the Lock Task that we created earlier.

Select Plugin -> Secure Settings then tap Edit.

Select Wake Device and set the following options:

Wake Type: Screen & Keyboard Lights On

Duration: 30 seconds

Select Task -> Wait and set duration to 100 MS

Select Plugin -> Secure Settings then tap Edit.

Select Keyguard and set the following options:

Select radio button On

Select Task -> Wait and set duration to 100 MS

Select Plugin -> Secure Settings then tap Edit.

Select Keyguard and set the following options:

Select radio button Off

Check box Run in background (No Notification)

If you run this Task now, you probably won't notice anything different right away. However, if you lock your phone and then unlock it, you'll notice that any security that you had set up is now bypassed. That's why we needed to teach Tasker how to lock your phone, as well.

STEP 5: Teach NFC Task Launcher to Unlock your phone

Open NFC Task Launcher and create a new task for NFC named "Unlock Phone".

Take your NFC tag and follow the instructions on the screen to write the tag for this task.

Add a new Task by tapping the big "+" icon in the upper right corner.

Select Category Tasker

Check "Tasker Task" and tap "Next"

Type "Unlock" in the field next to the magnifying glass icon under Tasker Task and tap "Add to Task"

Congratulations! You can now unlock your phone with your NFC tag! Of course, as we mentioned above, this leaves your phone without any passcode protection that you may have previously enable. Which leads us to our final step...

STEP 6: Teach Tasker to Lock your phone

Open Tasker and select the Profiles tab

Create a new Profile with the big "+" at the bottom of the screen and select Event

Select Display -> Display Off

Go back to the Profiles page by tapping the "< Event Edit" icon in the upper left corner.

Select the Lock Task that you made earlier

Now when the screen goes off, your phone is secure again.

That's it! My hope is that this tutorial is easy to follow so that anyone who wants to unlock their phone with an NFC tag can get it working. While there are a lot of steps, I tried to make them clear and specifically looked for a method that was flexible enough to allow me to update my phone or even use a different phone with this method, without having to track down a modified NFC.apk for my specific firmware every time I wanted to update.

In regards to how battery life is affected by having NFC turned on all the time, my personal experience shows no appreciable decrease in battery life. I went all day yesterday without charging (about 15 hours) with typical usage for me, which includes 2-3 hours of podcast playback over both wired and bluetooth headphones, occasional GMail and Facebook usage, Solitaire, and 45-60 minutes of phone calls, which is on par with what I was getting before the hack. As with all things, your mileage may vary. If battery life becomes an issue, try the new NFCLockscreenoffEnabler.apk plugin that [MENTION=272718]nacron[/MENTION] found instead of the MoDaCo one which gives you the On At Lockscreen option in addition on Always On. It should save you a bit on battery life.

Many thanks to the authors of the software I used (XPosed Framework, MoDaCo Toolkit Plugin, NFCLockscreenoffEnabler.apk, NFC Task Launcher, Tasker, Secure Settings Plugin), as well as this thread and this web page for giving me the framework to construct this rather elaborate NFC hack. :)

I would love to hear from others if this works on other phones.

Changelog:

2013-09-05 - Add NFCLockscreenoffEnabler.apk option for NFC on at Lockscreen (thanks [MENTION=272718]nacron[/MENTION] for this!)

2013-08-14 - Changes to the Tasker Tasks that make the lock and unlock functions run a bit more smoothly by avoiding collisions. (i.e., if you're unlocking the phone, it won't try to lock it until the unlock is done.) I've also added easy-to-import XML files for the Tasks, so you don't have to type them in manually anymore!

2013-08-09 - Initial release (can you "release" a process?)