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

Android üzerinde çalışan uygulamanın versiyon Info kısmında yer alan versionCode, versionName gibi bilgileri nasıl alabilirim.
Daha önceden aşağıdaki şekilde android.helpers ile bilgileri alan bir yapı kurmuştum fakat Version Info içindeki bilgilere ulaşamadım.

Bu bilgiye ulaşmanın başka bir yolu varmıdır.

Uygulamayı 10.3.1 üzerinde geliştiriyorum.

function fn_VersiyonBilgileri(): TVersiyonBilgileri;
var
 VersiyonBilgileri: TVersiyonBilgileri;
begin
 {$IFDEF ANDROID}
 try
   VersiyonBilgileri.BASE_OS := JStringToString(TJBuild_VERSION.JavaClass.BASE_OS);
 except
   VersiyonBilgileri.BASE_OS := '';
 end;
 try
   VersiyonBilgileri.CODENAME := JStringToString(TJBuild_VERSION.JavaClass.CODENAME);
 except
   VersiyonBilgileri.CODENAME := '';
 end;
 try
   VersiyonBilgileri.INCREMENTAL := JStringToString(TJBuild_VERSION.JavaClass.INCREMENTAL);
 except
   VersiyonBilgileri.INCREMENTAL := '';
 end;
 try
   VersiyonBilgileri.PREVIEW_SDK_INT := TJBuild_VERSION.JavaClass.PREVIEW_SDK_INT;
 except
   VersiyonBilgileri.PREVIEW_SDK_INT := 0;
 end;
 try
   VersiyonBilgileri.RELEASE := JStringToString(TJBuild_VERSION.JavaClass.RELEASE);
 except
   VersiyonBilgileri.RELEASE := '';
 end;
 try
   VersiyonBilgileri.SDK := JStringToString(TJBuild_VERSION.JavaClass.SDK);
 except
   VersiyonBilgileri.SDK := '';
 end;
 try
   VersiyonBilgileri.SDK_INT := TJBuild_VERSION.JavaClass.SDK_INT;
 except
   VersiyonBilgileri.SDK_INT := 0;
 end;
 try
   VersiyonBilgileri.SECURITY_PATCH := JStringToString(TJBuild_VERSION.JavaClass.SECURITY_PATCH);
 except
   VersiyonBilgileri.SECURITY_PATCH := '';
 end;

 Result := VersiyonBilgileri;

 {$ENDIF}
end;
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#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
#3
(16-12-2021, Saat: 11:02)adelphiforumz Adlı Kullanıcıdan Alıntı: Merhabalar

Android üzerinde çalışan uygulamanın versiyon Info kısmında yer alan versionCode, versionName gibi bilgileri nasıl alabilirim.
Daha önceden aşağıdaki şekilde android.helpers ile bilgileri alan bir yapı kurmuştum fakat Version Info içindeki bilgilere ulaşamadım.

Bu bilgiye ulaşmanın başka bir yolu varmıdır.

Uygulamayı 10.3.1 üzerinde geliştiriyorum.

function fn_VersiyonBilgileri(): TVersiyonBilgileri;
var
 VersiyonBilgileri: TVersiyonBilgileri;
begin
 {$IFDEF ANDROID}
 try
   VersiyonBilgileri.BASE_OS := JStringToString(TJBuild_VERSION.JavaClass.BASE_OS);
 except
   VersiyonBilgileri.BASE_OS := '';
 end;
 try
   VersiyonBilgileri.CODENAME := JStringToString(TJBuild_VERSION.JavaClass.CODENAME);
 except
   VersiyonBilgileri.CODENAME := '';
 end;
 try
   VersiyonBilgileri.INCREMENTAL := JStringToString(TJBuild_VERSION.JavaClass.INCREMENTAL);
 except
   VersiyonBilgileri.INCREMENTAL := '';
 end;
 try
   VersiyonBilgileri.PREVIEW_SDK_INT := TJBuild_VERSION.JavaClass.PREVIEW_SDK_INT;
 except
   VersiyonBilgileri.PREVIEW_SDK_INT := 0;
 end;
 try
   VersiyonBilgileri.RELEASE := JStringToString(TJBuild_VERSION.JavaClass.RELEASE);
 except
   VersiyonBilgileri.RELEASE := '';
 end;
 try
   VersiyonBilgileri.SDK := JStringToString(TJBuild_VERSION.JavaClass.SDK);
 except
   VersiyonBilgileri.SDK := '';
 end;
 try
   VersiyonBilgileri.SDK_INT := TJBuild_VERSION.JavaClass.SDK_INT;
 except
   VersiyonBilgileri.SDK_INT := 0;
 end;
 try
   VersiyonBilgileri.SECURITY_PATCH := JStringToString(TJBuild_VERSION.JavaClass.SECURITY_PATCH);
 except
   VersiyonBilgileri.SECURITY_PATCH := '';
 end;

 Result := VersiyonBilgileri;

 {$ENDIF}
end;

FMX.DeviceInfo-master https://github.com/rzaripov1990/FMX.DeviceInfo indirip kullanabilirsiniz. Çok kullanışlı...
Cevapla


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



Konuyu Okuyanlar: 1 Ziyaretçi