So erkennen Sie den Android-Browser
Navigieren zu http://whatsmyuseragent.com/ zeigt mir mein stock-Android-browser auf meinem Galaxy Nexus läuft 4.2.1 hat die user-agent -
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24
Es gibt nichts in dieser user-agent, die mir erlaubt, eindeutig zu erkennen, dass es eine stock-Android-browser. Die Chrome for Android " - app hat zumindest android
in der UA. Gibt es eine Möglichkeit für mich zu erkennen, die Lager Android-app?
Kommentar zu dem Problem - Öffnen
Was verstehen Sie unter "ein stock-Android-browser" sein? Bedenken Sie, dass andere Geräte verschickt werden können, mit verschiedenen Browsern vorinstalliert.
@CommonsWare Der Standard, AOSP web-browser, entwickelt von Google, nicht bei jedem anderen browser, die installiert werden konnte, von einem Unternehmen vor dem Versand.
Diese Frage wurde auch diskutiert, unter: stackoverflow.com/questions/9286355/....
InformationsquelleAutor der Frage gsingh2011 | 2013-01-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor der Antwort efusien
"Android-Browser" ist der name eines Browsers. Verwirrend vielleicht, aber mit einer Frage wie dieser, sollte es nicht sein. Es ist der browser, der kommt mit der überwiegenden Mehrheit der Android-Geräte und er ist offensichtlich nicht reden Chrome.
Laut http://www.useragentstring.com/ dies ist die komplette Liste der Android-Stock-Browser-strings. Ich bin derzeit unsicher, ob es einen besseren Weg, um wählen Sie alle von Ihnen auf einmal, da einige weiterhin Hinzugefügt werden, und auch die würden nicht zufällig Ziel von Chrome auf Android. Ich hoffe, jemand gibt Ihnen eine bessere Antwort als ich bin neugierig mich der beste Weg zu gehen über diese.
InformationsquelleAutor der Antwort TelFiRE
Können Sie sagen, der Unterschied zwischen den stock browser und den Chrome-browser von der Suche nach "Android" in der useragent und die überprüfung der AppleWebKit/### Versionsnummer.
Den stock-Android-browser ging nie über 534, und Chrome ist 537 oder höher.
Dies ist zu 99% zuverlässig, und sehr nützlich für eine app auf Android 4.x mit einem WebView.
==details (wenn Sie wollen, in die Tiefe zu gehen!)==
Bearbeiten 7:
'AudioNode' in window
ist wahrscheinlich eine sichere schnuppern für AOSP (oder alte Chrome) versus moderne Versionen von Chrome. Versuchen Sie es hier. Fenster.AudioNode wurde eingeführt, als Teil der WebAudio-Unterstützung in Chrome 29 (und kaum zurück-portiert von den Herstellern). Unsere 4.0.3 Telefon hat Chrome 41 auf, und'AudioNode' in window
zurücktrue
für Chrome undfalse
für AOSP. Man könnte auch schnüffeln und anderen features eingeführt, nachdem AOSP Entwicklung abgeschlossen -- siehe dieser link für andere potenzielle Funktionen zu schnuppern. Wählen Sie eine Funktion eingeführt, bevor Chrome 42, da Android 4.0-Benutzer können keine upgrade-Vergangenheit, die version. Wie gewohnt mit Android, wird es sicher seltsam Grenzfälle, aber das schnüffeln ist wahrscheinlich ungefähr so gut, wie Sie bekommen können (vor allem, wenn in Verbindung mit der überprüfung, dass die WebKit-version < 537).Bearbeiten 8:
==WebView auf Android==
Prüfung auf <= 534 ist ein perfekter test, wenn mit einem WebView in einer app. Die Kompatibilität definition für Android 4.3 (die Letzte Android-version, AOSP für WebView), sagt der WebView user-agent MUSS sein: "
Mozilla/5.0 (Linux; U; Android $(VERSION); $(LOCALE); $(MODEL) Build/$(BUILD)) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
".Den Kompatibilität definition für Android 4.4 (die erste Android-version zu verwenden Chrom für WebView ), sagt der WebView user-agent MUSS sein: "
Mozilla/5.0 (Linux; Android $(VERSION); $(MODEL) Build/$(BUILD); wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36
".Weniger als bei Android 4.3 ist sehr ähnlich zu der 4.3 definition immer AOSP). Größer als 4,4 ist sehr ähnlich zu der 4.4 definition (immer in Chrom).
==AOSP auf Android==
Für den browser auf dem Gerät (nicht WebView), der user-agent ist nicht verpönt, indem Sie das Compatibility Definition. Die tatsächliche verwendete browser-version unterschiedlich wie dokumentiert auf quirksmode und dokumentiert, wie für die Samsung browser-version.
Edit 4: Der empfohlene Lösung ist zu schauen, für Android ohne Chrome im user-agent als pro: https://developer.chrome.com/multidevice/user-agent#webview_user_agent es kann jedoch auch notwendig sein, um das fehlen /Windows Phone/da Mobile-IE11-8.1-Update hat auch Android in der UA "
Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 520) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537
". Edit 5: https://msdn.microsoft.com/en-us/library/hh869301(v=vs. 85).aspx zeigt, dass IE12 auf dem Windows Phone noch Android in der Benutzer-agent.Edit 3: Wie die Kommentatoren gesagt haben, gibt es Geräte gibt, mit AOSP und >= 535, aber das ist der zuverlässigste test, die ich gefunden habe (ich würde gerne sehen, etwas besser). Sie können aber versuchen, sicherzustellen, dass Ihr code ist noch funktionsfähig, wenn die schnüffeln nicht, und akzeptieren, dass die Android-Fragmentierung bedeutet, dass es seltsam sein wird-Geräte, die scheitern. Caveat Emptor. Edit 6: Blick auf einige Daten für eine bestimmte Website über 1% von dem, was Sie, sich zu AOSP-Anmeldungen müssen WebKit-537, obwohl es so scheint, ziemlich zuverlässig, es ist definitiv nicht 100% zuverlässig.
Edit 2: Wenn Sie mit einem WebView in einer App, ist diese Erkennung ist nützlich für Android >= 4.0 && Android < 4.4.4, da die WebView-Komponente verwendet AOSP auch wenn Chrome auf dem Gerät installiert ist.
Edit 1: Da native android ist jetzt "veraltet" sind, ist es sinnvoll, zu testen, für die es (und verwenden Sie das flag zu arbeiten, um Unterschiede zu finden, die nicht erkannt werden, verwenden Sie die feature-Erkennung).
InformationsquelleAutor der Antwort robocat
Ab jetzt gibt es keine wahre Methode, um dies zu erkennen. Ich bin derzeit auf Android 4.2.2 stock Galaxy S4 AT&T und der Standard-browser hat jetzt Chrome in der user-agent (das aber immer noch die TouchWiz-Probleme von position fixed)
Bis Samsung entweder a) fix touchwiz oder b) entfernen chrome aus dem ua string, haben wir nicht die wahre Methode, die Erkennung der android-Standard-browser. Ich kann nicht sagen, ob dies der Fall ist für alle 4.2 x + Handys, aber dies ist ein großes Problem für die Entwicklung von teams erfordern die Herstellung/browser-spezifische Abfragen.
Ich bin abgesehen von einer aktiven Entwicklungs-team für mobile-end-web-apps-und es scheint TouchWiz verursacht eine Menge von Fragen, die für die verschiedenen Aspekte entwickelt.
Weiteres Problem ist, dass es Unternehmen wie Dolphin (große browser, schrecklich UA), die in allen diesen Fällen würde pop wieder als Standard-browser, da es nicht, eine "dolphin" - Zeichenfolge und verwendet AppleWebKit534x
Als auch bezüglich der U in der user-agent-string, es hatte nichts zu tun mit dem, was browser. Infact dies hat zu tun mit der Verschlüsselungsmethode, die verwendet wird, für jeden browser (in der Regel standard, basierend auf Standort)
"Web-Browser erstellt, die in den Vereinigten Staaten, wie Netscape Navigator und Internet Explorer, verwenden Sie die Buchstaben U, I, und N angeben, die Stärke der Verschlüsselung in der Benutzer-agent-Zeichenfolge. Bis 1996, als die Regierung der Vereinigten Staaten nicht zulässig Verschlüsselung mit Schlüsseln von mehr als 40 bit exportiert werden, Verkäufer versendet den verschiedenen browser-Versionen mit unterschiedlichen verschlüsselungsstärken. "U" steht für "USA" (für die version mit 128-bit-Verschlüsselung), "I" steht für "International" — der browser mit 40-bit-Verschlüsselung und kann verwendet werden, überall in der Welt — und "N" steht (de facto) "None" (keine Verschlüsselung).[10] nach der Aufhebung von Exportbeschränkungen, die meisten Anbieter unterstützt 256-bit-Verschlüsselung."
Quelle: http://en.wikipedia.org/wiki/User_agent#Encryption_strength_notations
InformationsquelleAutor der Antwort Cory
efusien Antwort (Nov 11 '13 at 20:18) funktioniert bei mir, obwohl eine variable nicht deklariert wurde, und ein Komma verwendet wurde, in einem Punkt statt Semikolon, die Ergebnisse in ein großes fail für alle, die sich für eine copy/paste Antwort.
Folgende ist was für mich gearbeitet, mit einem praktischen Beispiel mit einem "wenn es die native browser" Zustand:
InformationsquelleAutor der Antwort Nick
Sieht es aus wie das Vorhandensein von "Linux; U; Android" ist eine konsequente Unterscheidungsmerkmal für den stock-browser. Wer weiß, was das "U" bedeutet, aber ich vermute, es wird unzuverlässig sein in der Zukunft. Hoffentlich wird der browser entweder Weg gehen oder zu spielen beginnen, wie Chrom, wenn die Saiten zu ändern. Einige andere Saiten sind unten zum Vergleich
Android Chrome:
"Mozilla/5.0 (Linux; Android 4.1.2; SAMSUNG-SGH-I727 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36"
Android-Firefox:
"Mozilla/5.0 (Android; Mobile; rv:23.0) Gecko/23.0 Firefox/23.0"
Android-Opera:
"Mozilla/5.0 (Linux; Android 4.1.2; SAMSUNG-SGH-I727 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.63 Mobile Safari/537.36 OPR/15.0.1162.61541"
InformationsquelleAutor der Antwort Paul Fox
Wenn JavaScript anstelle von server-side-UA-sniffing ist eine Möglichkeit für Sie, versuchen Sie
(!!window.chrome) && (!window.chrome.app)
.Kann ich nicht garantieren, jedoch, dass dies eine "sichere", "forever" oder so ähnlich. Halten Sie für einen bösen hack verwendet werden, nur für Testzwecke.
Erklärung: Chrome (oder Chromium?) Browser (gut, die, die ich hier getestet, die Chrome-und Android-stock auf Cyanogenmod 10) haben ein Objekt mit dem Namen
window.chrome
, aber auf dem Android-stock-browser, den ich getestet-zumindest das Objekt nicht über dieapp
Eigenschaft.Edit: Scheint wie ältere Versionen von Chrome geben wird, Fehlalarme mit dieser Lösung. Wiederum neuere Versionen der stock-browser wird wahrscheinlich geben Sie "false negative".
InformationsquelleAutor der Antwort Paolo Priotto
Your ' E nicht immer
android
in der UA weil Sie mit der Desktop-Ansicht. Es gibt scheinbar keine Möglichkeit, zu erkennen, dass dies ist ein mobiles Gerät in diesem Modus. Sobald Sie wechseln zur normalen Ansicht sehen Sie rechts UA.InformationsquelleAutor der Antwort AsafK
Ich denke, Sie sind auf der Suche nach diesem:
Android nativen browser nicht aktualisiert, obige version 534.30 so können Sie filter, um die version und Android-UA-string-Kombination (oben wir können davon ausgehen, Ihr einen Chrome-browser)
Hier ist mein JavaScript-Beispiel-code:
(Wenn Sie müssen spezielle styling-würde ich hinzufügen-Klasse, um den Körper mit der folgenden JS-snippet)
(Einige Android-Geräte reporting 'android', das ist, warum wir brauchen die Kleinschreibung Gespräch)
InformationsquelleAutor der Antwort Peter M
Samsung Galaxy Note 3 mit Android 4.4.2 hat die folgenden UA-string für die Aktie "Internet" - browser (nicht Chrome oder jedem anderen browser):
Samsung Galaxy S5 mit Android 4.4.2 hat die folgenden UA-string für die Aktie "Internet" - browser (nicht Chrome oder jedem anderen browser):
Können wir nicht nur überprüfen AppleWebKit < 537 mehr.
Ich bin derzeit die Prüfung, ob AppleWebKit < 537 ODER Chrome < 29 Benutzer efusien Methode.
InformationsquelleAutor der Antwort Ezn
Ref aus nicks und efusien Antworten.
Dies funktioniert bei mir mit Android OS 4.4.2
da jetzt auf Kitkat, native browser auf Android mit WebKit-537.36 gleiche wie Chrome, wenn wir log userAgent.
Durch die überprüfung auch chromeVersion < 29 dann habe ich eine native browser auf Android 4.4.2. (Chrome version auf meinem Samsung S4 ist jetzt 40).
Finden Sie in diesem link-WebKit-Tabelle, die auf verschiedenen Android-version :
http://jimbergman.net/webkit-version-in-android-version/
InformationsquelleAutor der Antwort Prakarangs
Brauche ich, um zu erkennen, Android-Stock-Browser, fügen Sie einige benutzerdefinierte Stile, weil es scheint nicht zu handhaben box-sizing richtig.
Der code, den ich verwendet, basiert auf dem @Prakarangs Antwort, die war nicht für mich arbeiten.
(Es Tat nicht erkennen, dass der stock-browser auf einem Galaxy Note 2)
Vielleicht ist das hilfreich für jemand anderes zu.
InformationsquelleAutor der Antwort tim-we
Müssen Sie entfernen SamsungBrowser von regexp.
Für SamSungBrowser, die Sie verwenden können
SamsungBrowser/([0-9]*.[0-9]*) oder Android.*SAMSUNG.*Version/([0-9]*.[0-9]*) für alte browser
http://developer.samsung.com/technical-doc/view.do?v=T000000203
InformationsquelleAutor der Antwort cestmoi