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;
比如我们在某个平台(Windows、OSX、Android 和 iOS 之一)调用默认的浏览器打开百度,只需要:
OpenUrl('http://www.baidu.com');
就可以了。