web-dev-qa-db-ja.com

Javascript / jQueryを介してAndroid電話を検出

使用中のデバイスがモバイルWebサイトのAndroidであることを検出するにはどうすればよいですか?

特定のcss属性をAndroidプラットフォームに適用する必要があります。

ありがとう

110
Xavier

それを見てください: http://davidwalsh.name/detect-Android

JavaScript:

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

PHP:

$ua = strtolower($_SERVER['HTTP_USER_AGENT']);
if(stripos($ua,'Android') !== false) { // && stripos($ua,'mobile') !== false) {
  header('Location: http://Android.davidwalsh.name');
  exit();
}

Edit:一部のコメントで指摘されているように、これはケースの99%で機能しますが、一部のEdgeケースはカバーされません。 JSでより高度で防弾のソリューションが必要な場合は、platform.jsを使用する必要があります。 https://github.com/bestiejs/platform.js

206

このワンライナーはどうですか?

var isAndroid = /(Android)/i.test(navigator.userAgent);

i修飾子は、大文字と小文字を区別しないマッチングを実行するために使用されます。


Cordova AdMobテストプロジェクトから取得した手法: https://github.com/floatinghotpot/cordova-admob-pro/wiki/00.-How-To-Use-with-PhoneGap-Build

39
Mars Robertson

Michalの答えは最高だと思いますが、さらに一歩踏み込んで、元の質問に従ってAndroid CSSを動的に読み込むことができます。

var isAndroid = /(Android)/i.test(navigator.userAgent);
if (isAndroid) {
    var css = document.createElement("link");
    css.setAttribute("rel", "stylesheet");
    css.setAttribute("type", "text/css");
    css.setAttribute("href", "/css/Android.css");
    document.body.appendChild(css);
}
2
drlarsen
;(function() {
    var redirect = false
    if (navigator.userAgent.match(/iPhone/i)) {
        redirect = true
    }
    if (navigator.userAgent.match(/iPod/i)) {
        redirect = true
    }
    var isAndroid = /(Android)/i.test(navigator.userAgent)
    var isMobile = /(mobile)/i.test(navigator.userAgent)
    if (isAndroid && isMobile) {
        redirect = true
    }
    if (redirect) {
        window.location.replace('jQueryMobileSite')
    }
})()
1
Phillip Senn