Windows Phone 8,Web浏览器控件正在打开带有媒体元素的媒体文件并从应用程序导航

时间:2014-04-15 15:47:07

标签: c# windows-phone-8

有没有办法在WP8上检测到Web浏览器控件是使用媒体播放器自动打开媒体文件,然后激活OnNavigateFrom事件,以及如何将该事件与按下backBtn,Start或搜索按钮时激活的OnNavigateFrom事件区分开来。 这很重要,因为在这些情况下需要激活不同的代码。 有没有办法检测Web浏览器控件何时选择某种媒体URL的URL,并防止URL在外部应用程序中打开,但是在Web浏览器控件中打开URL还是在应用程序中存在某些媒体元素?

2 个答案:

答案 0 :(得分:0)

您可以覆盖OnBackKeyPress事件。 在App.xaml.cs中定义一个静态布尔变量,将其初始化为false。 并在按下后退键时设置为true。

并在触发OnNavigateTo事件时将其设置为false

答案 1 :(得分:0)

您需要与uri进行http通信。然后,在检查响应时,您将能够清楚地了解URL类型,即浏览器网页或在单独的媒体播放器中打开的媒体URL。

您将用于http通信的RequestContext类包含有关HttpContext属性中的HTTP请求的信息。从路由构造URL时,将RequestContext类的实例传递给RouteCollection.GetVirtualPath方法。

如果你看到requestContext.response.MediaType是text / html或text / plain或image / svg + xml或application / xhtml + xml,那么url是可浏览的, 对于任何其他mime类型,浏览器将根据网址的类型打开默认应用,如媒体播放器或解压缩实用程序。

这就是我如何隔离可浏览的uris和可下载的uris。

    private bool IsBrowsableMimeType(RequestContext requestContext)
    {
        //If the mime is text/html or text/plain or image/svg+xml or application/xhtml+xml
        //then mime type is browsable
        //else it is downloadable
        if (requestContext.response.MediaType == null)
        {
            return true;
        }
        if (!requestContext.response.MediaType.Equals("text/html") && !requestContext.response.MediaType.Equals("text/plain") && !requestContext.response.MediaType.Equals("application/xhtml+xml") && !requestContext.response.MediaType.Equals("image/svg+xml"))
        {
            //If the url is of image mime type, then let the browser show the image, dont download it.
            if (!requestContext.response.MediaType.Equals("image/svg+xml") && requestContext.response.MediaType.Contains("image"))
            {
                return true;
            }
            return false;
        }
        else
        {
            return true;
        }
    }

这就是我实现它的方式。