Android Question How to uniquely identify a device?


Licensed User
Hello. This thread is about the devices IMEI.
But before I get to the actual questions, I'd like to give you a rough explanation of our business model, so you know why the IMEI is so important to us.

We offer our customers various software solutions, including device tracking and order management.
In order to use these solutions, we require a unique identification number of the device on which the customer logs in.
Without this, our solutions will not work.

Now with Android 10, it is no longer possible to read the IMEI without the READ_PRIVILEGED_PHONE_STATE permission.
And getting the READ_PRIVILEGED_PHONE_STATE permission seems to be possible only for system apps.

Now to my questions:
1.) What exactly is a system app and is it even possible for an app for tracking and order management to be declared as a system app?
2.) Is there another way to uniquely identify a device?

I think you recognize the need for device identification for our business model and I hope you can help me. Thank you.


Licensed User
Create an own when the app starts the first time and store it on the device (RSA signed) and on your server. If the device get's lost or whatever (customer can buy a new device,etc.) offer the user to restore that id. You can check, if the id is used twice very easy via your server.


Licensed User
Thanks for the feedback.

One user can log in on N devices. Therefore one key per user is not possible.
I do not want to use Advertising IDs for this purpose, as they can easily be reset.

Is it still possible with Android 10 to query the ANDROID_ID? If so, how?


Well-Known Member
Licensed User
just to fill in some gaps, i looked into system app (your question #1).
my understanding is that you would have to follow a very tricky series of steps on a rooted device
in order to have your app installed as a system app (an app which is installed by default on a device
and resides in the /system folder, already inaccessible to unprivileged users). self-created unique id
(suggested above) looks of interest.


Licensed User
Best practices summarized, read here.