zoukankan      html  css  js  c++  java
  • ShellExecute的跨平台实现OpenUrl

    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
  • 相关阅读:
    Qt 打开UI是提示Runtime Error! 。。。 然后奔溃
    Qt exe和动态 库获取运行所需库
    区分EXE或者动态库dll是32位或者64位方法
    QFile 读2进制文件
    MFC 动态库编译错误
    Qt 编译错误
    Qt QNetworkProxy类帮助翻译
    Qt QHttpMultiPart类帮助翻译
    Qt QNetworkCookie帮助翻译
    Qt QHttpPart翻译
  • 原文地址:https://www.cnblogs.com/findumars/p/6601924.html
Copyright © 2011-2022 走看看