先声明一下,下面的这段代码是调用系统的浏览器实现网页浏览的功能,很显然这是一种比较简单的方法,但是它的可控制性就不行了,例如左软键的内容你是肯定该不了的。如何写一个自己的浏览器,而不调用系统的,等以后做出来再说吧。
调用系统的浏览器来实现网页浏览可以根据系统浏览器的状态而决定调用的方法,例如当系统浏览器正在使用的时候可以用TApaTask::SendMessage ()方法;当系统浏览器没有被使用的时候可以用RapaLsSession::StartDocument() 方法。
下面是实现代码:
TBool CinternetAppUi::ConnectL(const TDesC& addr)
{
const TInt KBrowserUid = 0x10008D39;
TUid id( TUid::Uid( KBrowserUid ) );
TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
TApaTask task = taskList.FindApp( id );
// the system browser is in use
if ( task.Exists() )
{
HBufC8* param8 = HBufC8::NewLC( addr.Length() );
param8->Des().Append( addr );
task.SendMessage( TUid::Uid( 0 ), *param8 ); // Uid is not used
CleanupStack::PopAndDestroy();
}
// the system browser is not in use
else
{
RApaLsSession appArcSession;
User::LeaveIfError(appArcSession.Connect()); // connect to AppArc server
TThreadId id;
appArcSession.StartDocument( addr, TUid::Uid( KBrowserUid ), id );
appArcSession.Close();
}
return ETrue;
}
//其中入口参数addr的格式是“4”+” <Space>“+”<Url>”,例如“4 www.google.com”。
其中采用以上方法不仅仅可以用于开启网页,还可以用于启动安装sis/sisx,具体示例代码如下:
RApaLsSession installSession;
TThreadId threadId;
TUid uid;
uid.iUid = 0x101F875A;
installSession.Connect();
installSession.StartDocument(aFileName, uid, threadId);
installSession.Close();
该代码自己没有亲测过,但是从理论上说应该可行,而且有大牛说uid都不用传进去。
另外播放音乐文件,网上也说可以通过该方法来实现,Uid分别如下:
0x102072c3 (from S60 3rd Edition onwards)
0x6c5b9d2 (S60 2nd Edition)
RapaLsSession::StartDocument()功能还是很强大的,在这里只做摘录,以后有机会再亲测,不过用其打开网页的确可行。
posted on 2009-08-12 17:36
frank.sunny 阅读(1045)
评论(0) 编辑 收藏 引用 所属分类:
C/C++学习和实践 、
symbian 开发