如何从webbrowser windows phone打开应用程序

时间:2012-09-08 05:37:23

标签: silverlight windows-phone-7 browser windows-phone

我正在开发一个Windows Phone应用程序。 在页面中我放置了一个按钮,在此按钮上单击我打开webbrowser并重定向到我们的网站页面以获取某些进程。有很多网页。在上一个网页中,我们添加了一个“关闭”按钮。在关闭按钮单击中,我想关闭webbrowser并在打开webbrowser之前打开具有最后状态的应用程序。我怎么能这样做?

感谢。

2 个答案:

答案 0 :(得分:6)

我将应用程序中的按钮称为“应用程序按钮”,将网页中的按钮称为“关闭按钮”。

将名为webBrowser1的WebBrowser控件添加到Windows Phone应用程序。使其覆盖整个屏幕,并将其Visibility属性设置为Collapsed。

在应用按钮的点击事件中,使用

webBrowser1.Visibility = System.Windows.Visibility.Visible;
webBrowser1.Navigate(new Uri("http://yourwebsite.com/page");

显示网络浏览器并将其导航到您网站的第一页。

点击网站最后一页上的关闭按钮,导航到您网站上的新页面,名为“close.html”或您想要的任何内容。在javascript中,这看起来像

<Button onclick="window.location.href='http://yourwebsite.com/close.html';">

返回应用程序:在webBrowser1的导航事件使用中,

if (e.Uri.ToString().Contains("close.html"))
{
    webBrowser1.Visibility = System.Windows.Visibility.Collapsed;
}

当您点击网站最后一页上的按钮时,它会导航到“close.html”。发生这种情况时,Web浏览器的导航事件将触发。由于此事件每次更改页面时都会触发,因此您需要检查新网址是否包含“close.html”,即关闭按钮导航到的页面。如果是这样,将隐藏Web浏览器,您将再次看到您的应用程序。

(在VB中,代码将是)

webBrowser1.Visibility = System.Windows.Visibility.Visible
webBrowser1.Navigate(New Uri("http://yourwebsite.com/page")

If e.Uri.ToString.Contains("close.html")
    webBrowser1.Visibility = System.Windows.Visibility.Collapsed
End If

答案 1 :(得分:1)

编辑:我在编写答案时用通用术语思考,并且不记得你是专门询问webbrowser(因此,使用webbrowsertask启动器)。感谢@Claus指出了OAuth的情况。所以,我正在修改我的答案,解释它是可能的,并且还提到使用启动器的问题,因为无法保证返回到启动器应用程序中的给定点(因为有选择器,因为它是可用的回调)。

一般而言,可能实现这一点。也就是说,有一个应用程序A可以打开另一个应用程序B,而应用程序B则需要关闭它并打开它。我认为不可能的原因有很多:   - 如何获得应用程序的地址/引用A.目前没有API。   - 没有内容处理程序/插件,第三方可以使用Web浏览器注册应用程序。   - 最重要的是,安全性,安全性,安全性。这将为网络攻击敞开大门。

但是,对于您将应用程序B作为Web浏览器的要求,可以使用任务启动程序WebBrowserTask。正如@claus建议的那样,您可以在上一页中使用Window.close() javascript来关闭浏览器,从而在其下方显示应用程序(希望,A)。这里的问题是,如果用户在浏览器启动后(在浏览器关闭之前)打开应用程序(让我们称之为C),并且用户不关闭C,那么当浏览器关闭时,用户将返回C而不是发射器App!根据您的要求,这不是您想要的。

因此,如果您希望实现您在问题中描述的效果,最好将Web浏览器嵌入到您的应用程序中(作为全屏应用)从这个有利位置,您可以通过Javascript在Web浏览器(控件)和(主机)应用程序之间进行交互。

希望这有帮助。