想在WP7中使用外部浏览器打开链接

8

这种架构类似于:
单击按钮后,将打开一个包含链接的HTML页面。单击链接后,我希望在WP7的外部(默认)浏览器中打开它,以便应用程序关闭并在外部打开链接。我该如何实现呢?
在xaml文件中添加了此控件:

<phone:WebBrowser Name="browser" Margin="0,78,0,0" />

点击按钮:

   private void Information_Loaded(Object sender,RoutedEventArgs e)
   {
       Assembly assembly = Assembly.GetExecutingAssembly();

       using (Stream stream = assembly.GetManifestResourceStream("index_en.html"))
       {
           using (StreamReader reader = new StreamReader(stream))
           {
               string html = reader.ReadToEnd();

               browser.NavigateToString(html);                   
           }
       }

现在index_en.html有一个链接需要在外部浏览器中打开。

3个回答

12

通常,您可以使用<a>标签上的Target属性来实现此目的。 但是,在WP7(至少在模拟器中)中,这种方法不起作用。

您可以通过拦截Navigating事件来实现类似以下的操作:

void WebBrowser1_Navigating(object sender, NavigatingEventArgs e)
{
    if (IsSupposedToOpenInPhoneBrowser(e.Uri))
    {
        e.Cancel = true;
        WebBrowserTask task = new WebBrowserTask();
        task.URL = e.Uri.ToString();
        task.Show();
    }
}

“IsSupposedToOpenInPhoneBrowser(e.Uri)”属性未找到。这意味着什么? - Shaireen
这只是一个假的方法占位符,如果您想在打开手机浏览器之前验证/过滤Uri,则可以不使用它。 - decyclone

7
你可以使用WebBrowserTask来启动浏览器。
但我发现你需要转义传递给它的URL :(

我怎样跳过它来实现? - Shaireen
@Shaireen:通过跳过实现什么?跳过什么? - Jon Skeet
抱歉没有表达清楚。实际上,在使用Web浏览器任务时,我需要将一个URL传递给它。那么这个URL应该是HTML文件的名称吗?还是应该打开的链接? - Shaireen
@Shaireen:在这种情况下,请参见早期的评论-从浏览器控件处理导航事件。 - Jon Skeet
链接已移动 http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/microsoft.phone.tasks.webbrowsertask%28v=vs.105%29.aspx - Gaurav Sharma
显示剩余5条评论

6
你可以使用类似这样的东西。
private void Button_Click_1(object sender, RoutedEventArgs e)
{
    WebBrowserTask webBrowserTask = new WebBrowserTask();
    webBrowserTask.Uri = new Uri("http://www.someUrl.com");
    webBrowserTask.Show(); 
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接