取得 APP 自己的版本号 (狠跨 4 个平台)


XE7 源码下载:[原创]取得APP自己的版本号(狠跨4个平台)XE7.zip

XE6 源码下载:[原创]取得APP自己的版本号(狠跨4个平台)XE6.zip

XE5 源码下载:[原创]取得APP自己的版本号(狠跨4个平台).zip 

//------------------------------------------------------------------------------
// by [龟山]阿卍 QQ:1467948783
// http://www.cnblogs.com/onechen/
//------------------------------------------------------------------------------

unit Main;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,

  {$IFDEF MSWINDOWS}
  Winapi.Windows,
  {$ENDIF}

  {$IFDEF ANDROID}
  Androidapi.JNI.GraphicsContentViewText,
  Androidapi.JNI.JavaTypes,
  FMX.Helpers.Android,
Androidapi.Helpers, // XE7 需要引入
{$ENDIF}
  {$IFDEF IOS} FMX.Platform.iOS, iOSapi.Foundation, Macapi.ObjectiveC, {$ENDIF}

  {$IFDEF MACOS} FMX.Platform.Mac, Macapi.Foundation, Macapi.ObjectiveC, {$ENDIF} FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts, FMX.Memo, FMX.StdCtrls; type TForm1 = class(TForm) ToolBar1: TToolBar; Label1: TLabel; Memo1: TMemo; procedure FormCreate(Sender: TObject); private
    { Private declarations }
  public
    { Public declarations }
  end; var Form1: TForm1; implementation

{$R *.fmx}

{$IFDEF MSWINDOWS}
procedure GetBuildInfo(var V1, V2, V3, V4: word); var VerInfoSize, VerValueSize, Dummy: DWORD; VerInfo: Pointer; VerValue: PVSFixedFileInfo; begin VerInfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), Dummy); if VerInfoSize > 0 then
  begin GetMem(VerInfo, VerInfoSize); try
        if GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo) then
        begin VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); with VerValue^ do
          begin V1 := dwFileVersionMS shr 16; V2 := dwFileVersionMS and $FFFF; V3 := dwFileVersionLS shr 16; V4 := dwFileVersionLS and $FFFF; end; end; finally FreeMem(VerInfo, VerInfoSize); end; end; end; function GetBuildInfoAsString: string; var V1, V2, V3, V4: word; begin GetBuildInfo(V1, V2, V3, V4); Result := IntToStr(V1) + '.' + IntToStr(V2) + '.' + IntToStr(V3) + '.' + IntToStr(V4); end; {$ENDIF}

procedure TForm1.FormCreate(Sender: TObject); {$IFDEF MSWINDOWS}
begin Memo1.BeginUpdate; Memo1.Lines.Add('OS : Windows'); Memo1.Lines.Add('ver : ' + GetBuildInfoAsString); Memo1.EndUpdate; end; {$ENDIF}

{$IFDEF ANDROID}
var PackageInfo: JPackageInfo; PackageName: JString; begin Memo1.BeginUpdate; Memo1.Lines.Add('OS : Android'); Memo1.Lines.Add('applicationLabel : ' + GetApplicationTitle); PackageName := SharedActivityContext.getPackageName; Memo1.Lines.Add('packageName : ' + JStringToString(PackageName)); PackageInfo := SharedActivityContext.getPackageManager.getPackageInfo(PackageName, 0); Memo1.Lines.Add('versionName : ' + JStringToString(PackageInfo.versionName)); Memo1.EndUpdate; end; {$ENDIF}

{$IF Defined(IOS) or Defined(MACOS)}
var AppNameKey: Pointer; AppBundle: NSBundle; NSAppName: NSString; begin Memo1.BeginUpdate; Memo1.Lines.Add('OS : iOS'); AppBundle := TNSBundle.Wrap(TNSBundle.OCClass.mainBundle); AppNameKey := (NSSTR('CFBundleName') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleName : ' + UTF8ToString(NSAppName.UTF8String)); AppNameKey := (NSSTR('CFBundleDisplayName') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleDisplayName : ' + UTF8ToString(NSAppName.UTF8String)); AppNameKey := (NSSTR('CFBundleIdentifier') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleIdentifier : ' + UTF8ToString(NSAppName.UTF8String)); AppNameKey := (NSSTR('CFBundleVersion') as ILocalObject).GetObjectID; NSAppName := TNSString.Wrap(AppBundle.infoDictionary.objectForKey(AppNameKey)); Memo1.Lines.Add('CFBundleVersion : ' + UTF8ToString(NSAppName.UTF8String)); Memo1.EndUpdate; end; {$ENDIF}

end.

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM