![]() |
Android versiyon bilgilerini çekme - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: Android versiyon bilgilerini çekme (/showthread.php?tid=6481) |
Android versiyon bilgilerini çekme - adelphiforumz - 16-12-2021 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; Cvp: Android versiyon bilgilerini çekme - elixir84 - 16-12-2021 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; Cvp: Android versiyon bilgilerini çekme - Jakarta2 - 27-12-2021 (16-12-2021, Saat: 11:02)adelphiforumz Adlı Kullanıcıdan Alıntı: Merhabalar FMX.DeviceInfo-master https://github.com/rzaripov1990/FMX.DeviceInfo indirip kullanabilirsiniz. Çok kullanışlı... |