franksunny的个人技术空间
获得人生中的成功需要的专注与坚持不懈多过天才与机会。 ——C.W. Wendte

 先声明一下,下面的这段代码是调用系统的浏览器实现网页浏览的功能,很显然这是一种比较简单的方法,但是它的可控制性就不行了,例如左软键的内容你是肯定该不了的。如何写一个自己的浏览器,而不调用系统的,等以后做出来再说吧。

调用系统的浏览器来实现网页浏览可以根据系统浏览器的状态而决定调用的方法,例如当系统浏览器正在使用的时候可以用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 阅读(990) 评论(0)  编辑 收藏 引用 所属分类: C/C++学习和实践symbian 开发

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



常用链接

留言簿(13)

随笔分类

个人其它博客

基础知识链接

最新评论

阅读排行榜

评论排行榜