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.
En Android, es necesario el permiso leer el estado del teléfono si se produce un error.
Código desarrollado con Embarcadero Delphi XE5.
Fuente: blogs.wittwer.fr
No hay comentarios:
Publicar un comentario