【问题标题】:How to open application from a webbrowser windows phone如何从 webbrowser windows phone 打开应用程序
【发布时间】:2012-09-08 05:37:22
【问题描述】:

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

谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    将名为 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 的 Navigating 事件使用中,

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

    当您单击网站最后一页上的按钮时,它会导航到“close.html”。发生这种情况时,Web 浏览器的 Navigating 事件将触发。由于每次更改页面时都会触发此事件,因此您需要检查新 url 是否包含“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
    

    【讨论】:

      【解决方案2】:

      编辑:当我写答案时,我是在笼统地思考问题,但不记得您是在专门询问网络浏览器(因此,使用webbrowsertask 启动器)。感谢@Claus 指出 OAuth 的情况。因此,我正在修改我的答案以解释这是可能的,并且还提到了使用启动器的问题,因为无法保证返回到启动器应用程序中的给定点(因为它与选择器一样,因为它的可用性回调)。

      一般而言,不可能做到这一点。也就是说,有一个应用程序 A 打开另一个应用程序 B,并且您想从应用程序 B 关闭它并打开 A。我认为不可能的原因有很多: - 如何获得应用程序 A 的地址/引用。目前没有 API。 - 没有内容处理程序/插件可供第 3 方使用网络浏览器注册应用程序。 - 最重要的是,安全,安全,安全。这将为来自网络的攻击打开大门。

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

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

      希望这会有所帮助。

      【讨论】:

      • 例如,OAuth 在用户成功通过身份验证时使用“停止 URI”。如果有必要,嵌入式网络浏览器是一个很好的解决方案。
      • @ClausJørgensen 你是对的。我想知道为什么我在回答问题时会笼统地思考。这显然是可能的 :) 但是,我发现应用程序外导航存在问题,因为用户有可能在浏览器启动后和关闭之前导航到另一个应用程序 (C)。如果应用程序 C 在后台,那么当浏览器关闭时它将返回它而不是应用程序 A。因此,对于返回启动器应用程序的要求,我认为嵌入式 Web 浏览器控件可以确保这一点。跨度>
      猜你喜欢
      • 2013-01-11
      • 2015-03-26
      • 1970-01-01
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多