symbians60s60-3rd-edition

Make phone browser open a URL on Symbian S60 3rd Ed programmatically


On clicking a URL displayed in my application running on a Symbian S60 3rd Edition device should make the phone browser ( which is already open ) open the specified URL.

Here is the code:

_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;
        }
    }

When I use this code to open a URL the browser comes to the foreground but does not get directed to the URL.

I suspect something is wrong in SendMessage call that is called after the browser is brought to foreground:

task.SendMessage(TUid::Uid(0), *parameter); // UID not used

Solution

  • Maybe it would cooler to open the link inside your app instead:

        _LIT( KTestUrlPrefix,"4 " );
    iOverriddenSettings = new (ELeave) TBrowserOverriddenSettings;
    iOverriddenSettings->SetBrowserSetting( EBrowserOverSettingsSmallScreen, EBrowserOverFullScreenValueSoftKeysOnly);//(TUint) 1 );
    iOverriddenSettings->SetBrowserSetting( EBrowserOverSettingsAutoLoadImages, (TUint) 1 );
    iOverriddenSettings->SetBrowserSetting( EBrowserOverSettingsFontSize, (TUint) 0 );
    iOverriddenSettings->SetBrowserSetting( EBrowserOverSettingsFullScreen, EBrowserOverFullScreenValueNormal);//(TUint) 0 );
    iOverriddenSettings->SetBrowserSetting( EBrowserOverSettingsCustomAp, (TUint) iIAP ); //access point ID 
    
    
    HBufC* parameter = HBufC::NewLC( KTestUrlPrefix().Length() + aLink.Length() );
    parameter->Des().Copy( KTestUrlPrefix );
    parameter->Des().Append( aLink );
    if(iLauncher)
    {
        delete iLauncher;
        iLauncher = NULL;
    }
    iLauncher = CBrowserLauncher::NewL();
    iLauncher->LaunchBrowserEmbeddedL( *parameter, NULL, NULL, iOverriddenSettings );
    CleanupStack::PopAndDestroy();