2012-10-04 75 views

回答

11

FROM: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的构建/ HRI39)为AppleWebKit/534.13(KHTML,例如Gecko)版本/ 4.0的Safari/534.13

,因为没有“移动”的字符串,为这些用户提供桌面版本(或一个定制版本的Android large-屏幕触摸设备)。用户代理告诉我们他们来自大屏幕设备XOOM平板电脑。

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

的Mozilla/5.0(Linux的; U;安卓2.2.1; EN-US; Nexus One的构建/ FRG83)为AppleWebKit/533.1(KHTML,例如壁虎)版本/ 4.0移动Safari/533.1

包含“移动”和“机器人”,因此服务网上冲浪者对这个Nexus One的移动体验!

FROM https://stackoverflow.com/a/7327201

它看起来像用户代理是在web视图一样在默认移动浏览器

+1

使用android 4.X这不起作用。任何人有另一种方式来检测WebView或Android浏览器? – fermin

+0

@fermin你可以使用“setUserAgentString(String ua)”编辑webview的用户代理并在后端解析它。 –

+1

我的问题是,有人正在加载我的移动网络与webview恩android应用程序,我无法做任何事情在webview ... – fermin

0

是,你可以通过添加这些元标签

<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/

+0

非常感谢!这是我正在寻找的解决方案。 –

-3

我用这个服务器端,访问有关客户信息的浏览器(剂) PHP

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

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

在客户端

- navigator.userAgent的

+0

我知道....我想要做的是区分web视图和浏览器。谢谢。 –

+0

在web 4.x和android 4.X的浏览器中,我找不到diffencie ...你知道另一种方式吗? – fermin

7

FYI:这个不能与用户代理来完成,但它可以被检测到。 Android的web视图发送一个附加标题“X-Requested-With”。这个头的值将是运行webview的应用程序的名称空间。

对于实例海豚浏览器发送:“mobi.mgeek.TunnyBrowser” 我的测试应用程序发送:“com.jamestymann.identifyawebview”

标准的浏览器其实并不在所有发送这个头,所以它是非常容易检测到这些。

我有虽然两个警告:

  • “X-请求-随着”是一个标准首部和有可能被从完全成熟的网页/浏览器从台式机发送。(例如,这用于检测具有这些值的ajax调用“X-Requested-With XMLHttpRequest”)
  • 大多数Google Play商店浏览器都使用webviews来显示网页。即使这些浏览器已经成熟,他们仍然会发送这个头文件。因此,如果您的意图是禁用此功能,您可能需要小心,因为您可能会禁用人员默认浏览器。
+1

有谁知道嵌入在应用程序中的iPhone浏览器做类似的事情吗? –

+0

对姜饼或旧版Android来说这是真的吗?我在JellyBean上看到了这种行为,但我在姜饼上看不到它。 –

+8

小心!这对于姜饼不是真的! –

9

Chrome dev docs:“如果你试图在web视图和Android版Chrome浏览区分,你应该寻找的版本存在/中的WebView用户代理字符串x.x中串。”