使用Ubuntu OS上的URL dispatcher来启动其它的应用
来源:互联网 发布:日本书原版软件 编辑:程序博客网 时间:2024/05/29 18:42
URL dispatcher 是在Ubuntu OS上的一个服务。它可以让我们的应用(confined,i.e, click package应用)来启动其它的应用。这些应用通常是一个特别的URL来 识别的。可能最常见的例子就是向网页浏览器发送http:// URL来启动网页浏览器,但是像music或其它的应用也可以支持。对于大多数的应用来说,这是一个最有用的方式来退出现有的应用来启动另外一个应用。
对于Qt应用来说,它访问URL dispatcher的方法是通过Qt的desktop plugin。C++应用可以通过使用QDesktopServices.openURL()方法。QML应用可以使
用 Qt.openUrlExternally(string)方法。对于其它的应用来说,它们可以利用根据自己的需求使用Platform API或直接使用liburl-dispatcher。
URL dispatcher项目可以在Launchpad的链接找到。
在URL dispatcher中有几种被支持的格式:
application:///$(app_id).desktopThe application URL can be used to start an application with a known Application ID. For applications that install their desktop file in /usr/share/applications the application ID should just be the name of the desktop file.appid://$(pkg)/$(app)/$(version)Allows for launching an application using an application ID. Also provides for wild cards. The $(app) can be first-listed, last-listed-app or only-listed-app to select the appropriate applicaiton using the click manifest. Also the $(version) can be current-user-version to select the version in the manifest
这里它指向另外一个在click包中的JSON文件。它定义了什么URL将被接受。一个简单的文件就像如下的格式:
通过上面的定义,每当有任何一个像“foo://*.bar.com”格式URL请求,由foo.desktop代表的应用将被自动被调用。在这里,如果“domain-suffix”项被省去的话,该应用将接受所有以“foo”代表的protocol格式的请求。URL dispatcher的定义是一个数组,这样有很多的这样的格式可以在应用中被定义。
对于Qt应用来说,它访问URL dispatcher的方法是通过Qt的desktop plugin。C++应用可以通过使用QDesktopServices.openURL()方法。QML应用可以使
用 Qt.openUrlExternally(string)方法。对于其它的应用来说,它们可以利用根据自己的需求使用Platform API或直接使用liburl-dispatcher。
URL dispatcher项目可以在Launchpad的链接找到。
支持的URL格式
基本URL格式
在URL dispatcher中有几种被支持的格式:
application:///$(app_id).desktopThe application URL can be used to start an application with a known Application ID. For applications that install their desktop file in /usr/share/applications the application ID should just be the name of the desktop file.appid://$(pkg)/$(app)/$(version)Allows for launching an application using an application ID. Also provides for wild cards. The $(app) can be first-listed, last-listed-app or only-listed-app to select the appropriate applicaiton using the click manifest. Also the $(version) can be current-user-version to select the version in the manifest
这里的第二种方法是推荐的方法。比如对于Clock应用来说,我们可以看到如下的应用URL:
appid://com.ubuntu.clock/clock/current-user-version
我们可以通过如下的方法得到在手机中应用click package的信息:
应用URL
对于一些应用来说,我们可以在启动应用的时候同时传人一些参数来启动该应用。我们可以通过在应用的Click manifest文件中加入URL的定义来注册该应用可以被一个或多个URL来启动。为了达到这个目的,我们可以在该文件中的“hooks”部分加入一个和“desktop”并列的小的json文件的申明。一个简单的manifest就像下面定义的。
{ "name": "My App", "version": "1.2.3", "hooks": { "foo": { "desktop": "foo.desktop", "urls": "foo.url-dispatcher" } }}
这里它指向另外一个在click包中的JSON文件。它定义了什么URL将被接受。一个简单的文件就像如下的格式:
[ { "protocol": "foo", "domain-suffix": "bar.com" }]
通过上面的定义,每当有任何一个像“foo://*.bar.com”格式URL请求,由foo.desktop代表的应用将被自动被调用。在这里,如果“domain-suffix”项被省去的话,该应用将接受所有以“foo”代表的protocol格式的请求。URL dispatcher的定义是一个数组,这样有很多的这样的格式可以在应用中被定义。
一个例程显示如何调用Music及Clock可以在如下的地址找到:
bzr branch lp:~liu-xiao-guo/debiantrial/launchapps
其中的代码为:
Button { objectName: "button" width: parent.width text: i18n.tr("Open Music") onClicked: { // Qt.openUrlExternally("file:///home/*/Music/*");// Qt.openUrlExternally("application:///com.ubuntu.music_music_1.3.638.desktop"); Qt.openUrlExternally("application:///com.ubuntu.music_music.desktop"); } } Button { objectName: "button" width: parent.width text: i18n.tr("Open Clock") onClicked: { // Qt.openUrlExternally("file:///home/*/Music/*"); Qt.openUrlExternally("appid://com.ubuntu.clock/clock/current-user-version"); } }
0 0
- 使用Ubuntu OS上的URL dispatcher来启动其它的应用
- 使用URL dispatcher的范例
- Ubuntu OS上的QML应用框架
- 解决只能上QQ和百度,其它的网址和 网络应用使用不了的问题
- OS X很棒的软件,应用,工具和其它闪亮的东西集合:Awesome OS X
- Mac上安装WireShark,然后用它来探测视频直播类应用的Url
- Activity的启动模式_打开其它应用中的Activity
- Android中启动其它应用的几种方式
- WebLogic的其它应用
- 通过URL来启动本地应用
- [Windows编程] 使用AttachThreadInput 来捕捉其它窗口的键盘输入
- springmvc的Dispatcher的url-pattern的拦截机制
- robotframework使用之“Firefox启动不起来,或者是启动了,页面是空白的,URL地址栏是空的”
- OS开发中使用[[UIApplication sharedApplication] openURL:]加载其它应用
- Mac OS上使用brew安装软件,类似ubuntu下的apt-get
- 其它命令的使用
- 改hosts来上google的应用。
- 使用内容提供者访问其它应用的Sqlite数据库
- jQuery Mobile页面转场data-transition
- Java中hashCode和equals方法的比较
- eclipse maven slf4j Failed to load class "org.slf4j.impl.StaticLoggerBinder"
- 使用Material 主题
- OpenGL-学习之路-OpenGL入门
- 使用Ubuntu OS上的URL dispatcher来启动其它的应用
- 后台进程二:DBWR进程
- 如何在Windows7下配置ASP服务器IIS
- GCC/G++编译原理分析
- jsp采用ajax提交list到struts2传值
- POJ_1845_Sumdiv_各种数学
- 30个让你拥有超常记忆力的小习惯
- android 账号系统
- IT职场人生系列之七:学外语