Symbian S60 3rd Edition デバイスで実行されているアプリケーションに表示された URL をクリックすると、電話ブラウザ (既に開いている) が指定された URL を開く必要があります。
コードは次のとおりです。
_LIT( KUrlPrefix,"4 " )
void CMunduIMAppUi::OpenInBrowser(const TDesC& aUrl)
{
HBufC *url = NULL;
const TInt KWmlBrowserUid =0x10008D39;
TUid id( TUid::Uid( KWmlBrowserUid ) );
TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
TApaTask task = taskList.FindApp( id );
// Checks if the browser is already open
if ( task.Exists() )
{
HBufC8* parameter = HBufC8::NewL( aUrl.Length()+ KUrlPrefix().Length());
parameter->Des().Copy(KUrlPrefix);
parameter->Des().Append(aUrl);
task.BringToForeground();
task.SendMessage(TUid::Uid(0), *parameter); // UID not used
delete parameter;
parameter = NULL;
}
}
このコードを使用して URL を開くと、ブラウザーは前面に表示されますが、URL に移動しません。
ブラウザがフォアグラウンドになった後に呼び出される SendMessage 呼び出しに問題があると思われます。
task.SendMessage(TUid::Uid(0), *parameter); // UID not used