Obtener el IMEI del móvil

En Android, se puede recuperar fácilmente el número IMEI. 

unit
 Android.IMEI;

interface

{$IFDEF ANDROID}
uses
  Androidapi.JNI.Telephony, Androidapi.JNI.Provider, Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge, FMX.Helpers.Android, androidapi.JNI.JavaTypes, androidapi.JNI.Os;
{$ENDIF}

function ToString: string;

implementation

function ToString: string;
{$IFDEF ANDROID}
var
  obj: JObject;
  tm : JTelephonyManager;
{$ENDIF}
begin
  Result := '111111111111';
{$IFDEF ANDROID}
  obj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
  if obj <> nil then
  begin
    tm := TJTelephonyManager.Wrap( (obj as ILocalObject).GetObjectID );
    if tm <> nil then
    begin
      Result := JStringToString(tm.getDeviceId);
    end;
  end;
  if Result = '' then
  begin
    Result := JStringToString(TJSettings_Secure.JavaClass.getString(SharedActivity.getContentResolver, TJSettings_Secure.JavaClass.ANDROID_ID));
  end;
{$ENDIF}
end;

end.
Una  unit con la unidad y el código que se necesite en función de la plataforma de destino.

unit
 Mobile.Identifier;

interface

{$IFDEF ANDROID}
uses
  Android.IMEI;
{$ENDIF}
{$IFDEF IOS}
uses
  DX.Apple.Utils;
{$ENDIF}

function ToString: string;

implementation

function ToString: string;
begin
  Result := '000000000000'; // Sous Windows
{$IFDEF ANDROID}
  Result := Android.IMEI.ToString;
{$ENDIF}
{$IFDEF IOS}
  Result := DX.Apple.Utils.VendorIdentifier;
{$ENDIF}
end;

end.
Advertencia !!!En Android, es necesario el permiso leer el estado del teléfono si se produce un error.

Código desarrollado con Embarcadero Delphi XE5.

No hay comentarios:

Publicar un comentario