更新: 谢谢你的答案,但我想澄清一下我是一个javascript开发人员,而不是一个Android应用程序开发人员,我需要在运行时检测一个网站是在Android的浏览器中加载还是在一个应用程序的WebView中加载,只能通过javascript代码
原始问题: 当我不对应用程序负责时,Javascript如何在运行时检测网站是在Android浏览器中加载还是加载到应用程序的WebView中?
答案 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);