Holen Sie sich die Android-Version im Browser per Javascript

Lesezeit: 4 Minuten

Benutzer-Avatar
Daniel Ryan

Ich entwickle eine Web-App und möchte Übergangseffekte auf Android-Geräten unter Version 3.0 deaktivieren.

Gibt es eine Möglichkeit, die Android-Versionsnummer per Javascript im Browser abzurufen? Wenn das so ist, wie?

  • Wenn Sie Cordova verwenden, können Sie device.version verwenden

    – Lakshay Dulani

    9. Juni 2016 um 5:18 Uhr

Benutzer-Avatar
Neiker

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

  • parseFloat nimmt nur ein Argument, also keine Notwendigkeit für die ,10 Am Ende. (Ich würde es selbst bearbeiten, aber Bearbeitungen müssen mindestens 6 Zeichen ändern.)

    – craigpatik

    8. Januar 2014 um 21:08 Uhr

  • parseFloat only takes one argument: Behoben

    – Roman Holzner

    11. April 2014 um 13:06 Uhr

  • Aus dem Kommentar unten von andy kann der Benutzeragent lauten: “Linux;Android; Release/4.1.2” Dies bedeutet, dass dies auf diesen Motorola-Geräten fehlschlagen würde.

    – Daniel Ryan

    6. Juli 2014 um 21:40 Uhr

  • Ich denke, Sie sollten hinzufügen , 10 am Ende, andernfalls, wenn die Zahl mit 0 beginnt, wird sie als Oktalzahl geparst. Versuchen Sie einfach Folgendes auszuführen: alert(parseInt(021)). Sie sehen 17, nicht 21

    – Benutzer1613797

    16. Januar 2015 um 9:22 Uhr

  • Ich stimme user1613797 zu, parseInt nimmt ein zweites optionales Argument, nämlich die Basis/Basis. Die Angabe als 10 hilft bei Zahlen, die mit 0 beginnen, und stellt sicher, dass sie nicht als Oktalzahlen behandelt werden

    – Katalin Berta

    3. Juli 2017 um 12:26 Uhr

Benutzer-Avatar
Göhel Kiran

Verwenden Sie den folgenden Code, um eine zweistellige Version von Android zu erhalten

var ua = navigator.userAgent;
if( ua.indexOf("Android") >= 0 )
{
  var androidversion = parseFloat(ua.slice(ua.indexOf("Android")+8)); 
  if (androidversion < 2.3)
  {
      // do whatever
  }
}

Zum Beispiel

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-ch; A43 Build/FROYO) AppleWebKit/533.1 (KHTML, wie Gecko) Version/4.0 Mobile Safari/533.1

wird Android Version = 2.2 zurückgeben

  • Wenn Ihnen meine Antwort gefällt und für Sie nützlich ist, stimmen Sie bitte ab und akzeptieren Sie die Antwort

    – Gohel Kiran

    20. September 2012 um 8:48 Uhr

  • Die Verwendung von indexOf + 8 ist eine wirklich schlechte Praxis, wenn Sie so gut wie nichts über Eingabezeichenfolgen wissen.

    – Alexej

    26. August 2014 um 12:57 Uhr

  • @Alexey das Skript prüft bereits, ob Android in der Zeichenfolge (2. Zeile) vorhanden ist. Daher würde ich nicht zustimmen, dass dies eine blinde indexOf-Operation ist, da sie immer die Position zurückgibt, die das Ende der Android-Zeichenfolge plus ein Zeichen markiert.

    – Vexter

    6. Januar 2015 um 8:48 Uhr

Ich kann nicht kommentieren, weil ich nicht genug Repräsentanten habe … Ich wollte nur hinzufügen, dass ich Neikers Code ändern musste

var match = ua.match(/Android\s([0-9\.]*)/i);

um die Groß-/Kleinschreibung zu ignorieren, da das Galaxy S3 in seinem Benutzeragenten “Android” anstelle von Android zurückgab

Benutzer-Avatar
jfriend00

Sie können sich die Zeichenfolge des Benutzeragenten ansehen – window.navigator.userAgent hier beschrieben: https://developer.mozilla.org/en/DOM/window.navigator.userAgent

Wenn Sie wirklich feststellen möchten, ob Sie eine Version des Browsers haben, die eine bestimmte Funktion unterstützt, ist es fast immer besser, die Funktionserkennung anstelle der Browserversionserkennung zu verwenden. modernizr ist eine riesige Codebasis für die Feature-Erkennung, die Sie entweder unverändert verwenden oder ein bestimmtes Stück ausleihen oder einfach lernen können, wie die allgemeine Technik funktioniert.

Wenn ich google, sehe ich User-Agent-Strings wie diese für Android:

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

Eine Regex von /Android\s+([\d\.]+)/ an window.navigator.userAgent wird die Android-Versionsnummer abrufen.

Die Player-Benutzeragenten von Motorola können Folgendes haben:

Linux;Android ; Release/4.1.2

Also musste ich anfangen, die folgende Regex zu verwenden:

[a|A]ndroid[^\d]*([\d[_|.]]+\d)

Dieser Code überprüft die Vollversion von Android aus dem Useragent.

var test = LowerThanAndroidVersion('4.4');
if (test) {
    alert('lower than android 4.4')
} else if (test == undefined) {
    alert('no android')
} else {
    alert('android 4.4 or higher');
}    

function LowerThanAndroidVersion(testversion) {
    //var useragent="Mozilla/5.0 (Linux; U; Android 4.3.1; en-gb; GT-I9300 Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30";
    var useragent = navigator.userAgent;
    var androidpoint = useragent.indexOf('Android');
    if (androidpoint >= 0) {
        var rest = useragent.substring(androidpoint + 8, useragent.length);
        var version = rest.substring(0, rest.indexOf(';'));
        return (version < testversion) ? true : false;
    }
}

Ich habe diese Funktion erstellt und funktionierte sehr gut in Android 2.6.3, 4.2.2., 6.0.1 in verschiedenen Browsern und Geräten. Ich denke das kann eine Alternative sein.

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;
}

Das ist ganz einfach, suchen Sie zuerst nach dem Wort “Android”. Wenn nicht gefunden, wird 0 zurückgegeben (ist kein Android-Benutzeragent). Suchen Sie dann nach dem ersten ‘;’ nach der “Android”-Position, die das Ende der Version markiert. Sobald diese Positionen abgerufen wurden, isoliert der ‘Slice’ die Versionsnummern (dass ‘+8’ das Wort “Android” aus dem Endergebnis entfernt) und kehrt dann zurück.

Wenn jemand einen Fehler findet, wäre es nett zu teilen.

1217430cookie-checkHolen Sie sich die Android-Version im Browser per Javascript

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy