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
  • 相关阅读:
    LintCode "Subarray Sum II"
    LintCode "Maximum Subarray Difference"
    LeetCode "Flip Game II"
    LintCode "Sliding Window Median" & "Data Stream Median"
    LintCode "Permutation Index"
    LintCode "Count of Smaller Number before itself"
    LeetCode "Nim Game"
    Etcd在Linux CentOS7下载、安装
    CentOS7 查看开启端口
    CentOS7-防火墙firewall 状态、重启、关闭
  • 原文地址:https://www.cnblogs.com/findumars/p/6601924.html
Copyright © 2011-2022 走看看