Existe un código de identificación en cada teléfono móvil llamado IMEI.
IMEI (International Mobile Equipament Identity) es un código USSD pregrabado en todos los dispositivos móviles GSM.
Con este código podremos identificar de forma única a cualquier dispositivo para poder realizar acciones en nuestras App.
Como obtener el IMEI en Android
Para obtener el identificador IMEI desde Delphi en Android, es muy sencillo, pero deberemos tener en cuenta los permisos.
Para obtener el IMEI necesitamos tener aprobado por el usuario el permiso READ_PHONE_STATE.
Para ello debemos ir al menú Proyect -> Options -> Uses Permissions y activar el permiso READ_PHONE_STATE.

Ahora vamos a solicitarle el permiso al usuario, para ello podemos realizar en cualquier momento antes de obtener el IMEI, en este caso lo realizaremos en el evento OnCreate del formulario.
implementation uses System.Permissions, Androidapi.helpers, Androidapi.JNI.OS; {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); var vPermisoPhoneState : string; begin vPermisoPhoneState := JStringToString(TJManifest_permission.JavaClass.READ_PHONE_STATE); PermissionsService.RequestPermissions([vPermisoPhoneState], nil); end;
En esto ya tendremos el permiso del usuario para poder meternos en su dispositivo móvil.
Ahora veremos como obteger el IMEI.
Get IMEI en Android desde Delphi
uses System.Permissions, Androidapi.helpers, Androidapi.JNI.OS, Androidapi.JNI.Telephony, Androidapi.JNI.Provider, Androidapi.JNIBridge, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.JavaTypes, FMX.Helpers.Android; {$R *.fmx} procedure TForm1.Button1Click(Sender: TObject); begin showmessage(getImei); end; procedure TForm1.FormCreate(Sender: TObject); var vPermisoPhoneState: string; begin vPermisoPhoneState := JStringToString(TJManifest_permission.JavaClass.READ_PHONE_STATE); PermissionsService.RequestPermissions([vPermisoPhoneState], nil); end; function TForm1.getImei(): string; var vObjAux: JObject; vTM: JTelephonyManager; vIMEI: String; begin vObjAux := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE); if vObjAux <> nil then begin vTM := TJTelephonyManager.Wrap((vObjAux as ILocalObject).GetObjectID); if vTM <> nil then vIMEI := JStringToString(vTM.getDeviceId); end; if vIMEI = '' then vIMEI := JStringToString(TJSettings_Secure.JavaClass.getString(SharedActivity.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID)); Result := vIMEI; end;
Otra opción al IMEI, es un ID que nos proporciona Android, cada vez que instalamos una App.
Si quieres conocer como obtener el Android ID, le el siguiente Artículo: Get Device Id.