OpenUrl 是 iOS 中 UIApplication 提供的一个函数,用于调用其它程序。实际上各个平台都有自己的实现,这里提供一个直接封装完的跨平台版本给大家。
uses {$IFDEF MACOS}{$IFDEF IOS}FMX.helpers.ios{$ELSE}
sysutils,posix.stdlib{$ENDIF}{$ENDIF}{$IFDEF MSWINDOWS}windows,
shellapi{$ENDIF}{$IFDEF ANDROID}Androidapi.JNI.App,Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText, Androidapi.JNI.Net,
Androidapi.helpers{$ENDIF};
procedure OpenUrl(const AUrl: String; const ADataType: String = '');
{$IF DEFINED(ANDROID)}
var
intent: JIntent;
begin
intent := TJIntent.Create;
intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
if Length(ADataType) > 0 then
intent.setDataAndType(TJnet_Uri.JavaClass.parse(StringToJString(AUrl)),
StringToJString(ADataType))
else
intent.SetData(TJnet_Uri.JavaClass.parse(StringToJString(AUrl)));
intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK);
TAndroidHelper.Activity.startActivity(intent);
{$ELSEIF DEFINED(MSWINDOWS)}
begin
ShellExecute(0, nil, PChar(AUrl), nil, nil, SW_SHOWNORMAL);
{$ELSE}
begin
{$IFDEF IOS}
SharedApplication.OpenUrl(StrToNSUrl(AUrl));
{$ELSE}
_system(MarshaledAString(TEncoding.Default.GetBytes('open ' + AUrl)));
{$ENDIF}
{$ENDIF}
end;
https://blog.qdac.cc/?tag=openurl