useragentandroid
❶ js判断客户端是iOS还是Android等移动终端的方法
javaScript是前端开发的主要语言,可以通过编写JavaScript程序来判断浏览器的类型及版本。JavaScript判断浏览器类型一般有两种办法,一种是根据各种浏览器独有的属性来分辨,另一种是通过分析浏览器的userAgent属性来判断的。在许多情况下,值判断出浏览器类型之后,还需判断浏览器版本才能处理兼容性问题,而判断浏览器的版本一般只能通过分析浏览器的userAgent才能知道。
对于浏览器判断:
1.如何判断是否为移动终端 利用正则match,
匹配navigator.userAgent是否含有字符串AppleWebKit*****Mobile
安卓qq浏览器HD版 只有AppleWebKit
2语言版本的判断
使用navigator.browserLanguage 便可得出windows phone语言版本,
当然可恶的小小手机语言版本也有兼容性的差异,兼容Mozilla,以及AppleWebKit内核的浏览器访问其语言版本,它会列出 navigator.language。
3.用JS代码
<script type="text/javascript">
var browser={
versions:function(){
var u = navigator.userAgent, app = navigator.appVersion;
return { //移动终端浏览器版本信息
trident: u.indexOf('Trident') > -1, //IE内核
presto: u.indexOf('Presto') > -1, //opera内核
webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
iPad: u.indexOf('iPad') > -1, //是否iPad
webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
};
}(),
language:(navigator.browserLanguage || navigator.language).toLowerCase()
}
4.查看结果
document.writeln("语言版本: "+browser.language);
document.writeln(" 是否为移动终端: "+browser.versions.mobile);
document.writeln(" ios终端: "+browser.versions.ios);
document.writeln(" android终端: "+browser.versions.android);
document.writeln(" 是否为iPhone: "+browser.versions.iPhone);
document.writeln(" 是否iPad: "+browser.versions.iPad);
document.writeln(navigator.userAgent);
❷ 如何修改Android自带浏览器的User Agent
最近在研究Android自带的Chrome Lite浏览器,想修改下它的UserAgent,跟踪了下Android2.2的源代码,发现主要要修改如下几个地方:
1.platform/packages/apps/Browser/src/com/android/browser/BrowserSettings.java
2.platform/packages/apps/Browser/res/values/strings.xml
在strings.xml中找到这一段:
view plain to clipboardprint?
<!-- Do not tranlsate. Development option -->
<string-array name="pref_development_ua_choices" translatable="false">
<item>Android</item>
<item>Desktop</item>
<item>iPhone</item>
</string-array>
<!-- Do not tranlsate. Development option -->
<string-array name="pref_development_ua_values" translatable="false">
<item>0</item>
<item>1</item>
<item>2</item>
</string-array>
这一段中pref_development_ua_choices对应的是Browser的debug模式下选择UserAgent时选项的名字,pref_development_ua_values对应的是不同的UserAgent,一会我会讲到这些数字分别对应的是什么UserAgent。
在BrowserSettings.java中找到这两段:
view plain to clipboardprint?
private static final String DESKTOP_USERAGENT = "Mozilla/5.0 (Macintosh; " +
"U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, " +
"like Gecko) Version/4.0 Safari/530.17";
private static final String IPHONE_USERAGENT = "Mozilla/5.0 (iPhone; U; " +
"CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 " +
"(KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";
view plain to clipboardprint?
public void update(Observable o, Object arg) {
BrowserSettings b = (BrowserSettings)o;
WebSettings s = mSettings;
s.setLayoutAlgorithm(b.layoutAlgorithm);
if (b.userAgent == 0) {
// use the default ua string
s.setUserAgentString(null);
} else if (b.userAgent == 1) {
s.setUserAgentString(DESKTOP_USERAGENT);
} else if (b.userAgent == 2) {
s.setUserAgentString(IPHONE_USERAGENT);
}
由此我们可以看出第一段Java代码是不同的UserAgent字符串,从第二段代码中我们可以看出strings.xml中那个整数的数组和不同UserAgent的对应关系,0对应默认的UserAgent,即Android Chrome Lite自己的UserAgent,1对应的是Mac OS的UserAgent,2对应的是IPhone OS的UserAgent。
有了上述信息,添加一个自己的UserAgent就不是什么难事了,首先在strings.xml中添加一个UserAgent选项的名字,然后添加一个序号,然后在BrowserSettings.java中添加一个自己的UserAgent字符串,然后在最后一个if后面写一个
view plain to clipboardprint?
else if (b.userAgent == 3) {
s.setUserAgentString(YOUR_OWN_USERAGENT);
}
然后就大功告成了!
❸ 如何修改Android自带浏览器的User Agent
楼上说的都不对,想让网站在PC、iPhone、iPad、Android设备上打开同一域名然后显示不同,原理上是通过网页程序首先识别设备,然后再根据不同设备,跳转到不同的二级域名或链接。其中,跳转二级域名这种方式是最常见的。 我以Php和Javascript代码,简单给出检测设备的代码,具体实现的代码恕不奉上: Php检测iPhone、iPad、Android设备: $iPhone = strstr($_SERVER['HTTP_USER_AGENT'],'iPhone'); $iPod = strstr($_SERVER['HTTP_USER_AGENT'],'iPod'); $Android = stripos($_SERVER['HTTP_USER_AGENT'],'Android') !== false; Javascript检测iPhone、iPad、Android设备: var iPhone = (navigator.userAgent.match(/iPhone/i)); var iPod = navigator.userAgent.match(/iPod/i); var Android = navigator.userAgent.match(/Android/i); 有了这些设备检测代码,就可以实现判断和域名跳转了。 另外,现在有些在不同客户端查看网站的工具,我不好发链接,自己输入关键字:Screenfly 可以用来测试不同不同显示器或者移动设备下网站显示状况的工具,并且支持最流行的平板电脑或者移动设备。
❹ JS辨别访问浏览器判断是android还是ios系统
1、通过判断浏览器的userAgent,用正则来判断是否是ios和Android客户端。代码如下:
❺ Android webview 传参大小
Android webview 传参大小如下
订单页面是webview,但是支付页面是客户端做,所以要在去付款的标签上onclick js传参。
function OrderPay(order_id,pay_type,pay_account_id) {undefinedif (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {undefinedwindow.location.href = 'aoxintest://OrderId/' + order_id+'/PayType/'+pay_type+'/PayAccountId/'+pay_account_id;} else if (navigator.userAgent.match(/(android);?/i)) {undefinedwindow.androidOrderPay.AndroidOrderPay(order_id,pay_type,pay_account_id);
有点难懂,ios系统判断传参的那个还好,但是android的代码看得一头雾水。再网上查到了一篇讲Android WebView的文章:
就是WebView的Js代码可以调用到Android代码中的方法,可以用AddJavascriptInterface方法在JS和Android间绑定一个新的窗口。因此JS代码中的androidOrderPay应该只是JAVA对象的别名的意思么。