30

我正在构建我的网站,我想知道用户使用的是 Android 浏览器还是带有 webview 的应用程序。

可能吗 ??

4

7 回答 7

18

根据Chrome 开发文档:“如果您试图区分 WebView 和 Chrome for Android,您应该在 WebView 用户代理字符串中查找 Version/ XX字符串。”

于 2015-03-10T23:07:08.447 回答
17

来自:http : //googlewebmastercentral.blogspot.com/2011/03/mo-better-to-also-detect-mobile-user.html

使用这样的用户代理:

Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) 版本/4.0 Safari/534.13

由于没有“mobile”字符串,因此为该用户提供桌面版本(或为 Android 大屏幕触摸设备定制的版本)。User-Agent 告诉我们他们来自大屏幕设备 XOOM 平板电脑。

另一方面,这个用户代理:

Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

包含“mobile”和“android”,所以在这个 Nexus One 上为网络冲浪者提供移动体验!

来自https://stackoverflow.com/a/7327201

看起来 Webview 中的 User-Agent 与默认移动浏览器中的相同

于 2012-11-26T20:41:46.117 回答
9

仅供参考:这不能通过用户代理完成,但是可以检测到。Android 的 Web 视图会发送一个附加标头“X-Requested-With”。此标头的值将是运行 webview 的应用程序的名称空间。

例如 Dolphin 浏览器发送:“mobi.mgeek.TunnyBrowser” 我的测试应用发送:“com.jamestymann.identifyawebview”

标准浏览器实际上根本不发送此标头,因此很容易检测到这些标头。

我有两个警告:

  • “X-Requested-With”是一个标准标头,可能会从桌面的完整网页/浏览器发送。(例如,这用于检测具有这些值“X-Requested-With XMLHttpRequest”的 ajax 调用)
  • 大多数 google play 商店浏览器使用 webviews 来显示网页。即使这些是成熟的浏览器,它们仍会发送此标头。因此,如果您的意图是禁用此功能,您可能需要小心,因为您可能会禁用人们的默认浏览器。
于 2013-03-06T17:31:28.640 回答
3

有关更多最新信息,请查看此处https://developer.chrome.com/multidevice/user-agent棒棒糖和更新的设备包含wv)在 UserAgent 中。

于 2018-05-25T19:15:01.020 回答
0

您可以将以下代码用于已检查的 android webview 或浏览器。

public static bool is_mobile_and_webview()
{
     return System.Web.HttpContext.Current.Request.Browser.IsMobileDevice && System.Web.HttpContext.Current.Request.UserAgent.Contains("; wv");
}
于 2019-12-18T02:00:11.937 回答
-1

是的,您可以通过添加这些元标记来优化您的网站

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
<meta name="HandheldFriendly" content="True" />

你可以在这里找到更多信息http://learnthemobileweb.com/2009/07/mobile-meta-tags/

于 2012-10-04T12:23:37.193 回答
-5

我使用这个服务器端,在 PHP 中访问有关客户端浏览器(代理)的信息

...
$_SERVER['HTTP_USER_AGENT']; // Different browsers ...
...

这个样板可以被解释 - 因此你会知道代理......

在客户端 - navigator.userAgent

于 2012-10-04T12:33:41.500 回答