检测网站是在Android浏览器中运行还是在应用程序的webView中运行

时间:2014-12-29 16:53:57

标签: javascript

更新: 谢谢你的答案,但我想澄清一下我是一个javascript开发人员,而不是一个Android应用程序开发人员,我需要在运行时检测一个网站是在Android的浏览器中加载还是在一个应用程序的WebView中加载,只能通过javascript代码

原始问题: 当我不对应用程序负责时,Javascript如何在运行时检测网站是在Android浏览器中加载还是加载到应用程序的WebView中?

2 个答案:

答案 0 :(得分:2)

我认为浏览器和网页浏览的用户代理都是相同的,因此无法区分。

然而,你可以做的是尝试将javascript代码绑定到android代码并调用它。如果成功则在webview中运行,或者如果它失败则在浏览器中运行。

有关如何执行此操作的详细信息,请参阅:

http://developer.android.com/guide/webapps/webview.html#BindingJavaScript

示例(Java / Javascript可能不正确):

@JavascriptInterface
public void userAgentDetect() {
    WebView = true;
}

将WebView变量设置为false,然后尝试运行该函数。

然后检查WebView布尔值以确认它是在应用程序还是浏览器中。

编辑:这是另一个例子: Detect inside Android Browser or WebView

答案 1 :(得分:1)

一种解决方案可能是向WebView用户代理添加内容,因此没有特殊标识符的任何其他内容都来自其他地方。

您可以像这样更改WebView用户代理:

//get current user agent
String userAgent = myWebView.getSettings().getUserAgentString();    
//add something
userAgent = userAgent + " my_website_is_in_a_webview";    
//save the new user agent
myWebView.getSettings().setUserAgentString(userAgent);