Skip to content

Delphi Android get device id

Con el uso de dispositivos móviles, los programadores tenemos una enorme necesidad de poder identificar cada uno de los dispositivos.

Para realizar esta acción, tenemos dos formas principales, una es mediante el IMEI del dispositivo móvil propiamente dicho, o sea un id que brinda el fabricante del hard del dispositivo; o la segunda forma es un ID que brinda Android a la App instalada.

Personalmente, utilizo la segunda opción, ya que para la primera, la obtención del IMEI, tenemos que obtener la aprobación del permiso READ_PHONE_STATE departe del usuario por ser un permiso peligroso.

Obtener Device Id en Android desde Delphi

Para obtener el Android Id desde Delphi, necesitamos solo una pocas líneas de programación.

Queremos aclarar, que este Id puede variar. ¿Cuándo varía? Puede variar por ejemplo al restaurar el dispositivo móvil a valores de fábrica o cuando se rootea el dispositivo.

Osea que si un usuario instala la App, obtendremos un ID, pero si el usuario resetea al dispositivo a fábrica y luego vuelve a instalar nuestra App, obtendremos un Id diferente al primero.

Para poder obtener el Id en Android, necesitaremos dos unidades: Androidapi.JNI.Provider y Androidapi.helpers, y la función es la siguiente:

Uses
  Androidapi.JNI.Provider, Androidapi.helpers;

function GetDeviceId(): string;
begin
  try
    Result := JStringToString(TJSettings_SECURE.JavaClass.getString(TAndroidHelper.Activity.getContentResolver, TJSettings_SECURE.JavaClass.ANDROID_ID));
  except
    Result := '';
  end;
end;