如何仅检测原生Android浏览器

它很容易检测Android设备,但我只能检测到Android本机浏览器。 问题是Dolphin浏览器有一个几乎相同的用户代理字符串,我想知道他们是否使用本机浏览器。

这可能吗?

Solutions Collecting From Web of "如何仅检测原生Android浏览器"

你只需要测试用户代理字符串的一些部分,以确保你有默认的android浏览器:

var nua = navigator.userAgent; var is_android = (nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1); 

您可以使用以下内容确保您在android中不匹配chrome,尽管现在在很多设备上,chrome被用作默认浏览器。

 var nua = navigator.userAgent; var is_android = ((nua.indexOf('Mozilla/5.0') > -1 && nua.indexOf('Android ') > -1 && nua.indexOf('AppleWebKit') > -1) && !(nua.indexOf('Chrome') > -1)); 

编辑:如果您想防止区分大小写,可以使用以下内容:

 var nua = navigator.userAgent.toLowerCase(); var is_android = ((nua.indexOf('mozilla/5.0') > -1 && nua.indexOf('android ') > -1 && nua.indexOf('applewebkit') > -1) && !(nua.indexOf('chrome') > -1)); 

我想你正在寻找这个:

Android原生浏览器未在版本534.30以上更新,因此您可以过滤到版本和Android UA字符串组合(上面我们可以假定它是Chrome浏览器)

这是我的示例JavaScript代码:

(如果你需要特定的样式,我会使用以下JS片段向主体添加一个类)

 var defectAndroid = $window.navigator && $window.navigator.userAgent.indexOf('534.30') > 0 && $window.navigator.userAgent.toLowerCase().match(/android/); if (defectAndroid) { // sample code specific for your Android Stock browser } 

(一些Android设备报告’android’,这就是我们需要小写对话的原因)

在Galaxy S3上,我发现Chrome和原生浏览器都有’AppleWebkit’,因此我从条件语句中取出了这一部分。 我还添加了版本,因为它只出现在本机浏览器中。 它对我有用

 var ua = navigator.userAgent; var isAndroidNative = ((ua.indexOf('Mozilla/5.0') > -1) && (ua.indexOf('Android') > -1) && !(ua.indexOf('Chrome') > -1) && (ua.indexOf('Version') > -1)) 
 var ua = navigator.userAgent.toLowerCase(); var isAndroid = ua.indexOf("android") > -1; //&& ua.indexOf("mobile"); if(isAndroid) { // Do something! // Redirect to Android-site? window.location = 'http://android.davidwalsh.name'; } 

您可以使用Javascript和useragentfunction执行此操作。 你需要做的是提出2个If-requests:

首先检测设备types:

 If android, ios, mobile, ipad, iphone Take this setting 

现在,您可以根据需要制作if-requests或case-request来检测浏览器的types

 If chrome, firefox, safari and so on Take this setting 

多数民众赞成理论:)