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