2010-05-24 4 views
2

Symbian S60 3rd Edition 장치에서 실행되는 응용 프로그램에 표시된 URL을 클릭하면 전화 브라우저 (이미 열려 있음)가 지정된 URL을 열어야합니다. 여기 전화 브라우저가 Symbian S60 3rd Ed의 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을 열려면이 코드를 사용

. 나는 성공적으로이 코드를 사용했습니다

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

답변

1

아마 대신 응용 프로그램 내에서 링크를 열 냉각기 것 :

_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(); 
+0

이것이 효과가 있습니다. 심비안이 서명 한 애플리케이션을 얻는다면 코드가 문제를 일으킬 수 있다고 우려한다. 여기 OpenWebBrowserL 함수를 참조하십시오 [http://code.google.com/p/mobbler/source/browse/src/mobblerappui.cpp?spec=svn47607874e896e0ab6ca07d5207a4453c1c8e973b&r=77a6566e9ea3dc192c97a0e8c23edd613a50dce8] 2251 번 번호 – ardsrk

+0

왜 그럴 필요는 없는지 ' 심비안에 서명해야합니다. 당신의 견본에서 왜 그것이 주석 처리되었는지 누가 알 수 있습니까? – Riho

1

내가 포럼 노키아에서 가져온 믿고, :

뭔가 의심 브라우저 는 포 그라운드로 가져온 후 호출 및 SendMessage 호출에 잘못된

당신이 Qt를에 대한 종속성이 괜찮다면

    RApaLsSession apaLsSession; 
    //Note that the UID of the OSS browser in S60 3rd Edition is 0x1020724D 
    //and from S60 3rd Edition, FP1 onwards 0x10008D39. 
    const TUid KOSSBrowserUidValue = {0x10008D39}; 
    //Parameter type 4: Start/Continue the browser specifying a URL => 
    //Parameter = "4"+" "+"" 
    _LIT(KParam4, "4 "); 


    HBufC* param = HBufC::NewLC(KParam4().Length()+aUrl.Length()); 
    param->Des().Copy(KParam4); 
    param->Des().Append(aUrl); 

    //Find the browser application 
    TUid id(KOSSBrowserUidValue); 
    TApaTaskList taskList(iEikonEnv->WsSession()); 
    TApaTask task = taskList.FindApp(id); 
    if(task.Exists()) 
     { 
     //Continue the application 
     task.BringToForeground(); 
     HBufC8* param8 = HBufC8::NewLC(param->Length()); 
     param8->Des().Append(*param); 
     task.SendMessage(TUid::Uid(0), *param8); // UID not used 
     CleanupStack::PopAndDestroy(param8); 
     } 
    else 
     { 
     if(!apaLsSession.Handle()) 
      { 
      User::LeaveIfError(apaLsSession.Connect()); 
      CleanupClosePushL(apaLsSession); 
      } 
     //Start the application 
     TThreadId thread; 
     User::LeaveIfError(apaLsSession.StartDocument(*param, KOSSBrowserUidValue, thread)); 
     CleanupStack::PopAndDestroy(&apaLsSession);// .Close(); 
     } 
    CleanupStack::PopAndDestroy(param); 

+0

게시 한 코드를 시도했지만 브라우저에서 URL을 열 수 없습니다. 그냥 궁금 해서요, 무슨 전화를 테스트 했습니까? Nokia N95를 사용하고 있습니다. – ardsrk

+0

당신의 능력을 확인 했습니까? 나는 우리가 모든 제 3 판 전화에서 이것을 사용했다고 확신한다. –

1

당신은, Qt를 함께 할 쉽게 할 수 있습니다.

QDesktopServices::openUrl(QUrl("http://yoursite.com/")); 

희망이 도움이됩니다.

+0

감사합니다. 그러나 나는이 기능 하나만으로 사용자가 Qt를 설치하도록 강요하고 싶지 않습니다. – ardsrk

+0

@ardsrk - 이해할 수 있습니다. 그래도 가능한 옵션으로 지적하고 싶었습니다. :) – Venemo

1

당신이 here을 문서화하고 here을 다운로드 할 수있는 브라우저 실행기 API를 시도?

0

SwEvent TApaTask :: SendMessage 기능이 필요합니다 (단,이 문서에는 언급되지 않음).