×
Namespaces

Variants
Actions

用qdbus在一个应用中打开另一个系统应用

From Nokia Developer Wiki
Jump to: navigation, search

Delete instructional text in italic

This article explains how to ... Replace the abstract text with a short paragraph (or sentence) describing what the topic covers.

Enter article metadata as described below. Note that this template can be placed anywhere in the article. Do not remove parameters that you do not use

Article Metadata
Article
Created: ()
Last edited: hamishwillee (13 Jun 2012)

Contents

Introduction

我们在开发中有时需要启动系统自带的应用,比如打电话界面、相机、日历等等,在Meego的参考文献在你的应用中启动另一个应用中也只介绍了打开浏览器、打电话界面、邮件、地图等应用,同样会经常用到的相机、日历等都没有介绍。 本文以打开相机为例介绍在命令行和在代码中两种情况下,如何用qdbus和QDBusInterface启动我们想启动的程序。

在命令行启动

先掌握通过命令行来获取相关信息和验证是否能成功启动,可以为在代码中实现节省更多的时间。
首先设备的开发者模式必须已经打开,如果你还没有打开开发者模式,请参考:如何打开N9和N950的开发者模式及注意事项.
通过Madd Terminal 打开设备终端,如果你有Tera Term或者putty等工具也可。账户是 developer ,密码是SDK Connection Tool中显示的密码。
进入终端后,输入命令qdbus,会打印出qdbus支持的所有的service的信息,如图所示:
Qdbus.png
qdbus 命令的参数是 service path method argument, 相机的service是com.nokia.maemo.CameraService, 这时我们大部分都无法确定对应的path是什么,在命令行键入qdbus com.nokia.maemo.CameraService 后,会打印出可能的path,如图所示:
Path.png
这里我们可用的path就是 "/", 同样方法可以获取到可用的method,
Qdbusmethod.png
本文使用无参数的showMessage方法打开相机,在命令行键入所需的所有参数,即:qdbus com.nokia.maemo.CameraService / com.nokia.maemo.meegotouch.CameraInterface.showMessage , 系统就会成功启动。

在代码中启动一个系统应用

因为要用到QDbus的相关接口,所以在pro文件中添加dbus模块,

QT+= dbus
<code>
在代码中使用QDBusInterface执行dbus的启动工作,同样需要的是service,path,interface,method 这些参数,有通过命令行得到的这些信息,在代码中就可以直接使用了,打开相机的只需下面两行代码:
<code>
QDBusInterface dbusInterface("com.nokia.maemo.CameraService","/","com.nokia.maemo.meegotouch.CameraInterface");
dbusInterface.call(QLatin1String("showCamera"));

例子程序在File:Qmldesktopserviceexample.zip基础上稍作改动,改动的代码下载:File:Desktopserviceanddbusexample.zip

相关链接


Add categories below. Remove Category:Draft when the page is complete or near complete

This page was last modified on 13 June 2012, at 13:59.
124 page views in the last 30 days.