2Pascal-新时代的Pascal

 找回密码
 立即注册
搜索
热搜: fastreport
查看: 1569|回复: 3
打印 上一主题 下一主题

app打开手机默认浏览器

[复制链接]

90

主题

293

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
82017
楼主
发表于 2015-11-4 17:11:46 | 显示全部楼层
京东购书支持本站
https://sourceforge.net/projects/fmxflyfilesutils/
code\SourceFlyFilesUtils.pas


[mw_shl_code=delphi,true]{$IFDEF POSIX}
const
{$IFDEF UNDERSCOREIMPORTNAME}
  _PU = '_';
{$ELSE}
  _PU = '';
{$ENDIF}
const
  libc        = '/usr/lib/libc.dylib';
  libpthread  = '/usr/lib/libpthread.dylib';
  libiconv    = '/usr/lib/libiconv.dylib';
  libdl       = '/usr/lib/libdl.dylib';

{$IF not Declared(_PU)}
const
  // On Mac OSX, cdecl names have a preceeding underscore
  // if x86 native backend.
  {$IF Defined(UNDERSCOREIMPORTNAME)}
  _PU = '_';
  {$ELSE}
  _PU = '';
  {$ENDIF}
  {$EXTERNALSYM _PU}
{$ENDIF}

const
{$IFNDEF IOS}
  _INODE_SUFFIX = '$INODE64';
{$ELSE IOS}
  _INODE_SUFFIX = '';
{$ENDIF !IOS}
  {$EXTERNALSYM _INODE_SUFFIX}
function _system(Name: MarshaledAString): Integer; cdecl;
  external libc name _PU + 'system';
{$ENDIF}


function GetEncodeURL(const URL: string; Https:Boolean = True): string;
begin
  Result := URL;
  if FileExists(Result) then
  begin
{$IFDEF MSWINDOWS}
{$ELSE}
    if Result.Substring(1, 1) <> '/' then
    begin
      Result := '/' + Result;
    end;
    Result := 'file://' + Result;
{$ENDIF}
  end
  else
  begin
    if Https then
    begin
      Result := 'https://' + URL;
    end
    else
    begin
      Result := 'https://' + URL;
    end;
    Result := TIdURI.URLEncode(Result);
  end;
end;


function OpenFileOnExtApp(const FileName: string; Https:Boolean = True): Boolean;
{$IFDEF ANDROID}
var
  Intent: JIntent;
  FileExtension: string;
  mime: JMimeTypeMap;
  MIMEType: JString;
  FileToOpen: string;
begin
// There may be an issue with the geo: prefix and URLEncode.
// will need to research
  Result := False;
  FileExtension := AnsiLowerCase(ExtractFileExt(FileName));
  mime := TJMimeTypeMap.JavaClass.getSingleton();
  MIMEType := nil;
  if mime <> nil then
  begin
    MIMEType := mime.getMimeTypeFromExtension(StringToJString(FileExtension));
  end;
  if MIMEType <> nil then
  begin
    // 调用相应程序打开当前程序
    Intent := TJIntent.Create;
    Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
    FileToOpen := GetEncodeURL(FileName, Https);
    Intent.setDataAndType(StrToJURI(FileToOpen), MIMEType);
    try
      SharedActivity.startActivity(Intent);
      Result := True;
    except
    end;
  end;

end;
{$ELSE}
{$IFDEF IOS}
var
  NSU: NSUrl;
  AURL: string;
begin
  Result := False;
  AURL := GetEncodeURL(FileName, Https);
  // iOS doesn't like spaces, so URL encode is important.
  NSU := StrToNSUrl(AURL);
  if TOSVersion.Check(9) or SharedApplication.canOpenURL(NSU) then
  try
    Result := SharedApplication.openUrl(NSU);
  except
  end;
end;
{$ELSE}
{$IFDEF MSWINDOWS}
var
  AURL: string;
begin
  Result := False;
  AURL := GetEncodeURL(FileName, Https);
  try
    ShellExecute(GetActiveWindow, 'open', PChar(AURL), '', '', SW_MAXIMIZE);
    Result := True;
  except
  end;
end;
{$ELSE}
var
  M:TMarshaller;
  AURL: string;
begin
  Result := False;
  //AURL := 'open -a Safari ' +  GetEncodeURL(AURL);
  AURL := 'open ' +  GetEncodeURL(FileName, Https);
  try
    _system(M.AsAnsi(AURL, CP_UTF8).ToPointer);
    Result := True;
  except
  end;
//  raise Exception.Create('Not supported!');
end;
{$ENDIF MSWINDOWS}
{$ENDIF IOS}
{$ENDIF ANDROID}[/mw_shl_code]
(C)(P)Flying Wang
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|新时代Pascal论坛

GMT+8, 2024-5-18 12:35 , Processed in 0.056001 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表