Verificar se meu delphi é compativel meu android
Hélio muito obrigado,
Como faço para verificar se o meu delphi e sdk configurado no delphi esta compativel com meu android.
Como faço para verificar se o meu delphi e sdk configurado no delphi esta compativel com meu android.
Nardelio Santos
Curtidas 0
Respostas
Hélio Devmedia
25/02/2019
Nardelio, tudo bem?
A Embarcadero publicou alguns códigos que são úteis. Eu particularmente aconselho sempre baixar o ultimo SDK pelo xxx que vem com o Delphi porque aí eu sei que qualquer versão será suportada mas se mesmo assim você precisar de mais precisão segue alguns códigos:
Este código é de um form que pega informação tanto de iOS como de Android:
Uma dica: O Código abaixo é específico para pegar a versão do seu aplicativo android
A Embarcadero publicou alguns códigos que são úteis. Eu particularmente aconselho sempre baixar o ultimo SDK pelo xxx que vem com o Delphi porque aí eu sei que qualquer versão será suportada mas se mesmo assim você precisar de mais precisão segue alguns códigos:
Este código é de um form que pega informação tanto de iOS como de Android:
unit uOSVersionAndLocale; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Controls.Presentation, FMX.ScrollBox, FMX.Memo, FMX.Platform {$IFDEF Android} ,Androidapi.JNI.Os //TJBuild ,Androidapi.Helpers // StringToJString {$ENDIF} {$IFDEF IOS} ,iOSapi.UIKit ,Posix.SysSysctl ,Posix.StdDef {$ENDIF} ; type TForm1 = class(TForm) Memo1: TMemo; ToolBar1: TToolBar; Button1: TButton; procedure Button1Click(Sender: TObject); private {$IFDEF IOS} function GetDeviceModelString: String; {$ENDIF} { private } public { public } end; var Form1: TForm1; implementation {$R *.fmx} {$IFDEF IOS} function TForm1.GetDeviceModelString: String; var Size: size_t; DeviceModelBuffer: array of Byte; begin sysctlbyname('hw.machine', nil, @Size, nil, 0); if Size > 0 then begin SetLength(DeviceModelBuffer, Size); sysctlbyname('hw.machine', @DeviceModelBuffer[0], @Size, nil, 0); Result := UTF8ToString(MarshaledAString(DeviceModelBuffer)); end else Result := EmptyStr; end; {$ENDIF} procedure TForm1.Button1Click(Sender: TObject); var OSVersion: TOSVersion; OSLang: String; LocaleService: IFMXLocaleService; ModelName: String; begin ModelName := 'unknown'; {$IFDEF Android} ModelName := JStringToString(TJBuild.JavaClass.MODEL); {$ENDIF} {$IFDEF IOS} ModelName := GetDeviceModelString; {$ENDIF} Memo1.Lines.Add(Format('ModelName=%s', [ ModelName ] )); Memo1.Lines.Add(Format('OSName=%s', [OSVersion.Name])); Memo1.Lines.Add(Format('Platform=%d', [Ord(OSVersion.Platform)])); Memo1.Lines.Add(Format('Version=%d.%d', [OSVersion.Major,OSVersion.Minor])); OSLang := ''; if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LocaleService)) then begin OSLang := LocaleService.GetCurrentLangID(); // if set Japanese on Android, LocaleService returns "jp", but other platform returns "ja" // so I think it is better to change "jp" to "ja" if (OSLang = 'jp') then OSLang := 'ja'; end; Memo1.Lines.Add(Format('Lang=%s', [ OSLang ] )); end; end.
Uma dica: O Código abaixo é específico para pegar a versão do seu aplicativo android
uses androidapi.Helpers, Androidapi.JNI.JavaTypes, androidapi.JNI.GraphicsContentViewText; {$R *.fmx} procedure TForm15.Button1Click(Sender: TObject); var PkInfo: JPackageInfo; begin Memo1.Lines.Clear; PkInfo:=SharedActivityContext.getPackageManager.getPackageInfo(SharedActivityContext.getPackageName,0); Memo1.Lines.Add('Package: '+JStringToString(PkInfo.packageName)); Memo1.Lines.Add('Version Name: '++JStringToString(PkInfo.versionName)); Memo1.Lines.Add('Version Code: '++JStringToString(PkInfo.versionCode)); end;
GOSTEI 0