OpenUrl 的跨平台实现
2024-10-18 11:32:49
OpenUrl 是 iOS 中 UIApplication 提供的一个函数,用于调用其它程序。实际上各个平台都有自己的实现,这里提供一个直接封装完的跨平台版本给大家。
Delphi/Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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 之一)调用默认的浏览器打开百度,只需要:
1
|
OpenUrl('http://www.baidu.com');
|
就可以了。
http://blog.qdac.cc/?p=3999
最新文章
- 代码的坏味道(12)——平行继承体系(Parallel Inheritance Hierarchies)
- html自我设计login登录
- 利用epoll写一个";迷你";的网络事件库
- Windows下几款免费C/C++开发工具简介
- JAVA 1.1
- Csstyle - 创建简洁、可维护强的 CSS 样式
- 【Codeforces 707C】Pythagorean Triples(找规律)
- jquery数组内多维对象
- requirejs解决异步模块加载方案
- LINUX VI 常用命令
- UITextField实现左侧空出一定的边距
- 看病要排队(stl)
- 关于ios极光推送server端注意的地方
- 【Qt】Qt之Tab键切换焦点顺序【转】
- IOS NSPredicate 查询、搜索
- 深入Mysql 导入导出
- C++:构造函数和析构函数能否为虚函数
- 解决Windows8系统磁盘占用太多100%或99%
- sublime text下载和汉化
- Ubuntu切换至root用户