Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android versiyon bilgilerini çekme
#2
unit AppVersion;

{$IFDEF MACOS}
 {$DEFINE APPLE}
{$ENDIF}

{$IFDEF IOS}
 {$DEFINE APPLE}
{$ENDIF}


interface

 function GetApplicationVersion: string;

implementation

{$IFDEF ANDROID}
uses
 FMX.Helpers.Android, FMX.Platform.Android,
 Androidapi.JNI.JavaTypes, Androidapi.Helpers,
 Androidapi.JNI.GraphicsContentViewText,System.SysUtils;
{$ENDIF}
{$IFDEF APPLE}
uses
 {$IFDEF IOS}
 iOSapi.Foundation,
 {$ELSE}
 Macapi.Foundation,
 {$ENDIF}
 Macapi.Helpers,
 Macapi.ObjectiveC,System.SysUtils;
{$ENDIF}
{$IFDEF MSWINDOWS}
uses
 System.Types, System.SysUtils, Windows;
{$ENDIF}


function GetApplicationVersion: string;
{$IFDEF ANDROID}
var
 PackageManager: JPackageManager;
 PackageInfo: JPackageInfo;
begin
 Result := '?';
 try
   PackageManager := TAndroidHelper.Context.getPackageManager; //SharedActivityContext.getPackageManager;
   PackageInfo := PackageManager.getPackageInfo(TAndroidHelper.Context.getPackageName, 0);  //SharedActivityContext.getPackageName, 0);
   Result := JStringToString(PackageInfo.versionName)+'.'+inttostr(PackageInfo.versionCode);
 except
 end;
end;
{$ENDIF}
{$IFDEF IOS}
var
 AppKey: Pointer;
 AppBundle: NSBundle;
 BuildStr : NSString;
begin
 Result := '?';
 try
   AppKey := (StrToNSStr('CFBundleVersion') as ILocalObject).GetObjectID;

   AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);
   BuildStr := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppKey));
   Result := UTF8ToString(BuildStr.UTF8String);

 except
 end;
end;
{$ENDIF}
{$IFDEF MSWINDOWS}
var
 sExe: string;
 Size, Handle: DWORD;
 Buffer: TBytes;
 FixedPtr: PVSFixedFileInfo;
begin
 Result := '?';
 try
   sExe := ParamStr(0);
   Size := GetFileVersionInfoSize(PChar(sExe), Handle);
   if (Size = 0) then
     exit; // RaiseLastOSError;
   SetLength(Buffer, Size);
   if not GetFileVersionInfo(PChar(sExe), Handle, Size, Buffer) then
     exit; // RaiseLastOSError;
   if not VerQueryValue(Buffer, '\', Pointer(FixedPtr), Size) then
     exit; // RaiseLastOSError;
   Result := Format('%d.%d.%d.%d',
     [LongRec(FixedPtr.dwFileVersionMS).Hi,  //major
       LongRec(FixedPtr.dwFileVersionMS).Lo,  //minor
       LongRec(FixedPtr.dwFileVersionLS).Hi,  //release
       LongRec(FixedPtr.dwFileVersionLS).Lo]) //build

 except

 end;
end;
{$ENDIF}
{$IFDEF OSX}
var
 AppKey: Pointer;
 AppBundle: NSBundle;
 BuildStr : NSString;
begin
 Result := '?';
 try
   AppKey := (StrToNSStr('CFBundleVersion') as ILocalObject).GetObjectID;

   AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle);
   BuildStr := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppKey));
   Result := UTF8ToString(BuildStr.UTF8String);

 except
 end;
end;
{$ENDIF}

end.


Kullanışı

  lbversiyon.Caption:='Versiyon : '+ AppVersion.GetApplicationVersion;
Cevapla


Bu Konudaki Yorumlar
Android versiyon bilgilerini çekme - Yazar: adelphiforumz - 16-12-2021, Saat: 11:02
Cvp: Android versiyon bilgilerini çekme - Yazar: elixir84 - 16-12-2021, Saat: 17:41
Cvp: Android versiyon bilgilerini çekme - Yazar: Jakarta2 - 27-12-2021, Saat: 13:03

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android’de Dosya Depolama ve Paylaşma-2: And 11 SDK 30 Scoped Storage SAF MediaStore emozgun 12 4.724 19-03-2024, Saat: 22:29
Son Yorum: nguzeller
  Android 33 api sdk güncelleme [ÇÖZÜLDÜ] codder71 4 358 19-02-2024, Saat: 22:38
Son Yorum: codder71
  Mobil Android Emulator Altıner 5 318 22-01-2024, Saat: 18:28
Son Yorum: Altıner
  CTRL + D delphi versiyon farkı Altıner 5 627 16-01-2024, Saat: 11:15
Son Yorum: yhackup
  Firebird Android bağlantı aeyeci 2 258 01-01-2024, Saat: 14:41
Son Yorum: nguzeller



Konuyu Okuyanlar: 1 Ziyaretçi