2012-04-20 4 views
2

URI의 공유 대상 역할을하는 앱을 만들고 있습니다. 그것은 URL을 누른 다음 URL을 사용하여 공유를 위해 브라우저를 웹 사이트에 호출합니다. 공유 대상 샘플을 사용하여 코드가 작동하지만 Launcher.LaunchUriAsync는 디버거 외부에있을 때 항상 실패합니다. 그것은 비록 오류가 무엇인지 알아내는 데 어려움을 겪고 있습니다. 보안 컨텍스트 일 ​​수도 있습니다.공유 대상에서 Launcher.LaunchUriAsync를 사용하려고합니다. win win 8

아이디어가 있으십니까? 코드 자체는 꽤 짧습니다. 성공 = false를 쉘에서 직접 실행하고 Win-C/Share를 통해 호출합니다. 매니페스트가 세 가지 네트워킹 선언을 모두 설정했는지 확인했습니다. 다른 생각들?

if (this.shareOperation.Data.Contains(StandardDataFormats.Uri)) 
{ 
    Uri uri = await this.shareOperation.Data.GetUriAsync(); 
    if (uri != null) 
    { 
     Uri tempUri; 
     Uri.TryCreate("http://www.mysite.com/#/search?v=results&bk=1.0&q="+uri.ToString(), UriKind.Absolute, out tempUri); 
     bool success = await Windows.System.Launcher.LaunchUriAsync(tempUri); 
     if (success) { 
      contentValue.Text += "Success invoking browser" + ":URL="+tempUri.ToString()+ Environment.NewLine; 
     } else { 
      contentValue.Text += "Fail invoking browser" + ":URL=" + tempUri.ToString() + Environment.NewLine; 
     } 
    } 
} 
+0

이것은 디버거에서 잘 실행됩니까? 또는 공유 대상에 디버거를 연결하는 방법을 알지 못했습니까? 내가 도울 수있는 후자의 문제 ... –

답변

1

공유 대상이 다른 응용 프로그램을 시작해서는 안됩니다. 공유 대상은 공유 창 내부에서 호스팅 될 예정이며 사용자가 앱이나 서비스와 콘텐츠를 공유 할 수 있도록 컨텍스트 내에서 신속하게 제공해야합니다.

아마도 WebView를 호스팅하고 서비스 URL로 이동해야할까요?

0

LaunchUriAsync를 성공적으로 호출하려면 몇 가지 조건이 충족되어야합니다.

다음과 같은 확인해야 here on MSDN 볼 수 있듯이

: API가 호출 될 때

  1. 호출 앱이 사용자에게 표시해야합니다.
  2. Classic Windows 응용 프로그램에서이 API를 호출하지 않는 한이 API는 ASTA 스레드 (UI 스레드라고도 함) 내에서 호출되어야합니다.
  3. 네트워크 위치를 가리키는 file : /// URI와 같이 인트라넷 URI를 시작하려면 매니페스트에 PrivateNetworkClientServer 기능을 지정해야합니다.
  4. 이 방법을 사용하여 로컬 영역에서 URI를 시작할 수 없습니다. 예를 들어, 응용 프로그램은 file : /// 프로토콜을 사용하여 로컬 컴퓨터의 파일에 액세스 할 수 없습니다. 대신 Storage API를 사용하여 파일에 액세스해야합니다.

처음 두 조건 중 하나가 코드가 실패하는 이유입니다. (적어도 내 문제가)