What information about the Android device is unique with each device?


I am looking for a Unique Information that differs for every Android Devices. I like to do it to serve as a security for my app to avoid it from spreading and being used by unwanted users other than those who i want to share my app with. I thought of the following and a problem:

  1. IMEI = Not all of my Clients' Device has a SIM Slot, others have WiFi Tablets.
  2. WiFi/BT MAC = It can easily be altered and changed to another Address using some MAC Changing Software.
  3. Android ID = Given that it is a Unique information that is present among most Android Devices, i have read an article that discusses about the bug that it resets upon factory reset.

So if there is any other idea that i can use as a protection, please refer it to me.

Settings.Secure#ANDROID_ID returns a unique 64 bit hex string for device

You can get it by:

import android.provider.Settings.Secure;

private String uniqueId = Secure.getString(getContext().getContentResolver(),