I\'m building a web app and wanting to disable transitions effects on Android devices under version 3.0.
Is there anyway to pick up the Android version number by Ja
I can't comment because I don't have enough rep... Just wanted to add that I had to change neiker's code to
var match = ua.match(/Android\s([0-9\.]*)/i);
to make it case insensitive because the Galaxy S3 was returning "android" instead of Android in its user agent
function getAndroidVersion(ua) {
ua = (ua || navigator.userAgent).toLowerCase();
var match = ua.match(/android\s([0-9\.]*)/i);
return match ? match[1] : undefined;
};
getAndroidVersion(); //"4.2.1"
parseInt(getAndroidVersion(), 10); //4
parseFloat(getAndroidVersion()); //4.2
Motorola's player user agents can have the following:
Linux;Android ; Release/4.1.2
So, I've had to start using the the following regex:
[a|A]ndroid[^\d]*([\d[_|.]]+\d)
1- Windows phone introduced a fake "android" user agent, so this deal with it
2- As @andy pointed out, there are some models with this format: Android/#.##
3- You can use the flag /i for case-insensitive
4- This code gives you back NaN when its not android and the version as a float when it is.
5- If you find more fake android phones you only need to add the string like this: (?:windows phone|fake phone|android...........
alert( parseFloat(navigator.userAgent.match(/.*?(?:windows phone|android\D+([0-9\.]*))|()/i)[1]) );
I made this function and worked very well in Android 2.6.3, 4.2.2., 6.0.1 in different browsers and devices. I think that can be an alternative.
function check_android_version()
{
var ua = navigator.userAgent;
ua = ua.toLowerCase();
var and_pos = ua.search("android");
if(and_pos == -1)
return 0; //not android
var pv_pos = ua.indexOf(";", and_pos);
var versao = ua.slice(and_pos+8, pv_pos);
return versao;
}
This is quite simple, first, search for the word "android". If not found, returns 0 (is not an Android user agent). Then search for the first ';' after the "android" position that marks the end of the version. Once these positions are gotten, the 'slice' insulates the version numbers (that '+8' removes the word "android" of the final result) an then returns.
If someone find any flaw, would be nice to share.
Use below code to get 2 digit version of Android
var ua = navigator.userAgent;
if( ua.indexOf("Android") >= 0 )
{
var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8));
if (androidversion < 2.3)
{
// do whatever
}
}
For example
Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
will return Android Version = 2.2