检测网站是在应用的 Android 浏览器还是网页视图中运行

Detect whether a website runs in Android browser or webView of an app

本文关键字:网页 视图 运行 浏览器 Android 网站 应用 检测      更新时间:2023-09-26

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

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

我相信

浏览器和网络视图的用户代理都是相同的,因此不会区分。

但是,您可以做的是尝试将javascript代码绑定到android代码并调用它。如果成功,则在 Web 视图中运行,如果失败,则在浏览器中运行。

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

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

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

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

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

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

编辑:这是另一个例子:在安卓浏览器或网络视图中检测

一种解决方案可能是向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);