調用symbian 瀏覽器開啟指定網頁

來源:互聯網
上載者:User

 

只要將下面這個類添加到功能裡,就可以實現呼叫瀏覽器並開啟指定網頁:
標頭檔 #include <apgcli.h>
void OpenUrlL(const TDesC& aUrl)
{
 if(aUrl.Length() <= 0)
  return;
 
 HBufC* param = HBufC::NewLC( aUrl.Length() + 8 );
 param->Des().Format( _L( "4 %S" ),&aUrl );
 
 // Wap Browser's constants UId
 const TInt KWmlBrowserUid = 0x10008D39;
 TUid id( TUid::Uid( KWmlBrowserUid ) );
 
 TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
 TApaTask task = taskList.FindApp( id );
 if ( task.Exists() )
 {
  HBufC8* param8 = HBufC8::NewLC( param->Length() * 4 );
  param8->Des().Append( *param );
  task.SendMessage( TUid::Uid( 0 ), *param8 ); // Uid is not used
  CleanupStack::PopAndDestroy(); // param8
 }
 else
 {
  RApaLsSession appArcSession;
  User::LeaveIfError(appArcSession.Connect()); // connect to AppArc server
  TThreadId id;
  appArcSession.StartDocument( *param, TUid::Uid( KWmlBrowserUid ), id );
  appArcSession.Close();
 }
 CleanupStack::PopAndDestroy(); // param
 return;
}
調用方法:  OpenUrlL( _L("www.yuelongr.cn") );
然而在S60 3rd的裝置上存在兩個瀏覽器"網路"和"服務","網路"UID是0x1020724D,"服務"的UID是0x10008D39,上面的代碼會啟動"服務",但是確不能開啟指定的網頁,

如果把UID換成"網路"的UID是可以正常開啟的,可是在S60 3rd FP1的裝置上只剩下一個瀏覽器,UID為0x10008D39,這就造成了代碼通用性的問題,為了避免產生兩個版

本的程式,我們可以首先尋找0x1020724D這個UID對應的程式是否在系統中存在,如果存在說明手機的基於S60 3rd的,如果不存那麼就是基於S60 3rd FP1的,這時我們

使用0x10008D39就可以了:
void OpenUrlL(const TDesC& aUrl)
{
 if(aUrl.Length() <= 0)
  return;
 
 const TInt KBrowserUid1 = 0x1020724D;
 const TInt KBrowserUid2 = 0x10008D39;
 
 RApaLsSession appArcSession;
 User::LeaveIfError(appArcSession.Connect()); // connect to AppArc server
 
 HBufC* param = HBufC::NewLC( aUrl.Length() + 8 );
 param->Des().Format( _L( "4 %S" ),&aUrl );
 
 // Wap Browser's constants UId
 TUid browserId( TUid::Uid( KBrowserUid1 ) );
 
 TApaAppInfo appInfo;
 if( appArcSession.GetAppInfo( appInfo, browserId ) != KErrNone )
 {
  browserId = TUid::Uid( KBrowserUid2 );
 }
 
 TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
 TApaTask task = taskList.FindApp( browserId );
 if ( task.Exists() )
 {
  HBufC8* param8 = HBufC8::NewLC( param->Length() * 4 );
  param8->Des().Append( *param );
  task.SendMessage( TUid::Uid( 0 ), *param8 ); // Uid is not used
  CleanupStack::PopAndDestroy(); // param8
 }
 else
 {
  TThreadId id;
  appArcSession.StartDocument( *param, browserId, id );
 }
 
 appArcSession.Close();
 CleanupStack::PopAndDestroy(); // param
 return;
}
調用方法:  OpenUrlL( _L("www.yuelongr.cn") );
聲明:
本貼內容來自互連網,經整理修改而成,感謝原作者的分享。
本文來源於Yuelongr http://www.yuelongr.cn/ 原文地址:http://www.yuelongr.cn/post/25.html

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.