使用Ubuntu OS上的URL dispatcher来启动其它的应用

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格式

基本URL格式

在URL dispatcher中有几种被支持的格式:

application:///$(app_id).desktop

The 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-listedlast-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

时间: 2024-08-10 00:05:08

使用Ubuntu OS上的URL dispatcher来启动其它的应用的相关文章

Ubuntu OS 上的Online Accounts 研讨(英文视频)

在这个视频里介绍了Ubuntu OS上的online account探讨.online account可以应用于Web,QML及Scope的开发.更多介绍请参阅developer.ubuntu.com. http://v.youku.com/v_show/id_XODU0Njk4MTA4.html

在Ubuntu OS上怎么本地化一个QML应用

在这篇文章中,我们来介绍怎么在Ubuntu OS上本地化一个应用.本地化对很多的应用很重要.我们重点介绍怎么把应用本地化为中文. 1)创建一个最基本的应用 首先打开我们的Ubuntu SDK,并选择"App with Simple UI and localization"的模版. 然后接下来:     我们完成后我们的项目后,我们发现在项目的"LocalizeQml/po"目录中有生产一个文件"CMakeLists.txt".当我们第一次运行我们

如何在Ubuntu OS上开发Scope (视频)

在这个视频里,我来介绍如何利用Ubuntu SDK从零开始在Ubuntu OS上开发一个视频.如果大家想看文章的话,请参阅文章"在Ubuntu OS上创建一个dianping Scope (Qt JSON)". 视频的地址在:http://v.youku.com/v_show/id_XODM5ODIxMDgw.html. 视频的源码在:bzr branch lp:~liu-xiao-guo/debiantrial/dianpingvideo 如果大家有什么意见或不清楚的,欢迎大家进行评

应该在Ubuntu OS上生存下来(3/3)

首先补充一下上次的内容: 先切换到 图形界面. ctrl  alt  T 呼出终端,如下图  (截图你可以用shutter,在ubuntu software center中自己去搜索) 技巧如下: F11  可以让终端全屏 Ctrl  Shift  +     可以增大终端的字体 Ctrl  -      可以减小终端的字体 如果想修改终端的配色, 在edit --> profile preference 中选择colors (去掉那个钩,然后自己配色) 技巧说完了,接着说实用命令: 特别说明:

应该在Ubuntu OS上生存下来(2/3)

为了在Ubuntu上生存下来 (能够看内核和源码之类的,注意不是搞服务器运维之类的) 还必须了解常用的文件或者目录操作命令,不废话了,直接上内容 按一次TAB 补全命令 按两次TAB 列出可选项 无意中读取了二进制未见 Ctrl+C  或者输入 reset 获取帮助 man 命令名称 例如 man ls 用linux的话,尽量避免用图形系统,实在需要的时候,比如说要用到IDE看android源码了,再去启动图形界面 linux 系统文件目录基础 记住要点: 1. linux没有folder(文件

应该在Ubuntu OS上生存下来(1/3)

万事开头难,一旦你克服了开头的一些麻烦,后面你自己就上路了. 有些人,喜欢讲一大堆理论,然而,怎么说呢,在人学习的不同阶段,理论知识占的比重是不同的. 作为一个linux的基本用户,还是要把实践放在首位,理论就当做tips好了. 关于虚拟控制台: 6个虚拟终端,1个图形终端 (ctrl+alt+f7) ssh hostname 远程登录某服务器 如: ssh 10.67.40.173 who 可以列出当前登录的用户及其登录方式 什么时候用who呢? tty1 即第一个虚拟终端的时候,我们来cat

使用URL dispatcher的范例

在上面的一篇文章中,我们介绍了怎样使用URL disptacher.在这篇文章中.我们来通过一个范例更进一步来了解怎样实现它. 1)创建一个具有URL dispatcher的应用 我们首先打开我们的SDK,然后创建一个最主要的QML template应用.我们把该应用叫做"MyApp".我们首先在"MyApp"的根文件夹加入一个文件叫做"MyApp.url-dispatcher"文件.这里面的内容例如以下: [ { "protocol&

怎么在Ubuntu手机上发送短信及拨打电话

由于一些平台安全性的原因,Ubuntu手机目前暂时没有提供供第三方开发者发送短信及拨打电话的接口,但是在实际的应用中,我们也许会需要用到发送短信息或拨打电话.这个时候我们怎么办呢?我们在前面的文章"使用URL dispatcher的范例"中已经介绍了如何使用url dispatcher来调用第三方应用的方法.这里我们用该方法来展示如何在我们的应用中发送短信息及拨打电话. 首先,我们创建一个最简单的"App with Simple UI"模版应用,并修改我们的&quo

小米手机测试Ubuntu笔记本上的PHP网页

Ubuntu笔记本和小米手机都连上小米路由. ifconfig wlan0 查看Ubuntu的IP为 192.168.31.156 php -S 192.168.31.156:8080 -t ./ 如果没有无线路由,可以在Ubuntu笔记本上用hostapd建立无线网络: http://my.oschina.net/eechen/blog/227230 开发8080端口: sudo ufw allow 8080/tcp && sudo ufw status 禁用8080端口: sudo u