I would like to be able to generate unique serial numbers for each Android device for use in unlocking an application. How could I do this?
EDIT:
The reason is I want to revamp a paid application and provide users who have paid for the old version, which will have a different package name, a way to obtain the full version by downloading an unlockable free version of the application. I would push an update to the old version that would generate and display the code that they could enter to turn the Free version into a fully functional version.
Model numbers, yes. Can 2 different manufacturers have the same serial number? It doesn't take multiple manufacturers. Each different factory or product can reuse serial numbers.
In Android devices how is the unique Serial number is assigned to each device? Most of the Samsung devices have a unique serial number on each device.
The IMEI or MEID, together with the serial number, won't help directly track the device. The same thing goes for apps that claim they can get a phone location by number only. Without direct access or connection to the cell phone at hand, the phone number won't be useful at all.
You can use the Android id. This id should be unique to devices, but how it is set depends on the implementation of the device manufacturer.
String deviceId = Secure.getString(context.getContentResolver(),Secure.ANDROID_ID);
The Android Id may change on factory reset of the phone and the user is also able to change it on rooted phones. But if you need an id to identify your user it should be fine.
why not using ther google account name? is easy to get and needs only a simple request on the manifest file. they will have purchased the license with gplay, so the g+ account name should be enough...
in the manifest:
<manifest ... >
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
...
</manifest>
to retrieve the account name:
AccountManager am = AccountManager.get(this); // "this" references the current Context
Account[] accounts = am.getAccountsByType("com.google");
to retrieve the name:
accounts[0].name
i write a simple alert to make me sure i have found an account here the whole code:
Account[] accounts = am.getAccountsByType("com.google");
AlertDialog.Builder miaAlert = new AlertDialog.Builder(this);
miaAlert.setTitle("i found an account name!");
miaAlert.setMessage(accounts[0].name);
AlertDialog alert = miaAlert.create();
alert.show();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With