49

http://whatsmyuseragent.com/に移動すると、4.2.1 を実行している Galaxy Nexus のストック Android ブラウザにユーザー エージェントがあることがわかります

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.34 Safari/534.24

このユーザー エージェントには、ストック Android ブラウザーであることを一意に検出できるものは何もありません。Chrome for Android アプリには、少なくともandroidUA が含まれています。ストック Android アプリを検出する方法はありますか?

4

14 に答える 14

17

「Android Browser」はブラウザの名前です。紛らわしいかもしれませんが、このような質問では、そうすべきではありません。これは、Android デバイスの大半に搭載されているブラウザであり、彼が Chrome について話しているのではないことは明らかです。

http://www.useragentstring.com/によると、これは Android Stock Browser 文字列の完全なリストです。一部は引き続き追加され、Android で Chrome を誤ってターゲットにしないため、一度にすべてを選択するより良い方法があるかどうかは現在不明です。これについての最善の方法に興味があるので、誰かがより良い答えをくれることを願っています。

Mozilla/5.0 (Linux; U; Android 4.0.3; ko-kr; LG-L160L Build/IML74K) AppleWebkit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; U; Android 4.0.3; de-ch; HTC Sensation Build/IML74K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; U; Android 2.3; en-us) AppleWebKit/999+ (KHTML, like Gecko) Safari/999.9

Mozilla/5.0 (Linux; U; Android 2.3.5; zh-cn; HTC_IncredibleS_S710e Build/GRJ90) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.5; en-us; HTC Vision Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.4; fr-fr; HTC Desire Build/GRJ22) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; T-Mobile myTouch 3G Slide Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC_Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari

Mozilla/5.0 (Linux; U; Android 2.3.3; zh-tw; HTC Pyramid Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.3; ko-kr; LG-LU3000 Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.3; en-us; HTC_DesireS_S510e Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile

Mozilla/5.0 (Linux; U; Android 2.3.3; de-de; HTC Desire Build/GRI40) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.3.3; de-ch; HTC Desire Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.2; fr-lu; HTC Legend Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.2; en-sa; HTC_DesireHD_A9191 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.2.1; fr-fr; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.2.1; en-gb; HTC_DesireZ_A7272 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.2.1; en-ca; LG-P505R Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.2.1; de-de; HTC_Wildfire_A3333 Build/FRG83D) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Mozilla/5.0 (Linux; U; Android 2.1-update1; es-mx; SonyEricssonE10a Build/2.0.A.0.504) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17

Mozilla/5.0 (Linux; U; Android 1.6; ar-us; SonyEricssonX10i Build/R2BA026) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1
于 2013-03-26T21:23:43.233 に答える
3

efusien の回答 (13 年 11 月 11 日 20:18) は機能しますが、変数は宣言されておらず、セミコロンの代わりにカンマが 1 つの場所で使用されていたため、コピーを探している人にとっては大きな失敗に終わりました/回答を貼り付けます

以下は、「ネイティブブラウザの場合」条件を使用した実用的な例を含め、私にとってうまくいったものです。

var navU = navigator.userAgent;
// Android Mobile
var isAndroidMobile = navU.indexOf('Android') > -1 && navU.indexOf('Mozilla/5.0') > -1 && navU.indexOf('AppleWebKit') > -1;
// Android Browser (not Chrome)
var regExAppleWebKit = new RegExp(/AppleWebKit\/([\d.]+)/);
var resultAppleWebKitRegEx = regExAppleWebKit.exec(navU);
var appleWebKitVersion = (resultAppleWebKitRegEx === null ? null : parseFloat(regExAppleWebKit.exec(navU)[1]));
var isAndroidBrowser = isAndroidMobile && appleWebKitVersion !== null && appleWebKitVersion < 537;

$(window).load(function() {
    if (isAndroidBrowser) {
        // It's Android's native browser (and not Chrome), so do something
    }
});
于 2014-08-06T01:52:45.537 に答える
1

Android 4.4.2 を実行している Samsung Galaxy Note 3 には、標準の「インターネット」ブラウザー ( Chrome やその他のブラウザーではない)の次の UA 文字列があります。

Mozilla/5.0 (Linux; Android 4.4.2; en-us; SAMSUNG SM-N900 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Mobile Safari/537.36

Android 4.4.2 を実行している Samsung Galaxy S5 には、標準の「インターネット」ブラウザー ( Chrome やその他のブラウザーではない)の次の UA 文字列があります。

Mozilla/5.0 (Linux; Android 4.4.2; en-gb; SAMSUNG SM-G900H Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.6 Chrome/28.0.1500.94 Mobile Safari/537.36

AppleWebKit < 537 をチェックすることはできなくなりました。

現在、ユーザー efusien の方法を使用して、AppleWebKit < 537 OR Chrome < 29 かどうかを確認しています。

于 2015-03-06T20:20:47.123 に答える
1

サーバー側の UA スニッフィングの代わりに JavaScript を使用するオプションがある場合は、 を試してください(!!window.chrome) && (!window.chrome.app)ただし、これが「安全」であること、「永久に」機能すること、またはそのようなことを保証することはできません。テスト目的でのみ使用するのは邪悪なハックだと考えてください。

説明: Chrome (または Chromium?) ブラウザー (ここでテストしたもの、Cyanogenmod 10 の Chrome および Android ストック) には という名前のオブジェクトがありますがwindow.chrome、少なくともテストした Android ストックブラウザーでは、このオブジェクトはappプロパティを持っていません。

編集: Chrome の古いバージョンでは、このソリューションで誤検知が発生するようです。次に、株式ブラウザの新しいバージョンでは、「偽陰性」が発生する可能性が最も高くなります。

于 2013-06-18T15:56:00.193 に答える
1

ボックスのサイズを適切に処理していないように見えるため、いくつかのカスタム スタイルを追加するには、Android Stock Browser を検出する必要があります。私が使用したコードは、私にとってはうまくいかなかった @Prakarangs の回答に基づいています。(Galaxy Note 2 のストック ブラウザは検出されませんでした)

var navU = navigator.userAgent;
var isAndroidMobile = navU.indexOf('Android') > -1 && navU.indexOf('Mozilla/5.0') > -1 && navU.indexOf('AppleWebKit') > -1;
var regExAppleWebKit = new RegExp(/AppleWebKit\/([\d.]+)/);
var resultAppleWebKitRegEx = regExAppleWebKit.exec(navU);
var appleWebKitVersion = (resultAppleWebKitRegEx === null ? null : parseFloat(regExAppleWebKit.exec(navU)[1]));
var isAndroidStockBrowser = isAndroidMobile && (appleWebKitVersion !== null && appleWebKitVersion < 535);

多分これは他の誰かにとっても役に立ちます。

于 2015-05-22T00:20:46.470 に答える
1

私はあなたがこれを探していると思います:

Android ネイティブ ブラウザはバージョン 534.30 以降に更新されていないため、バージョンと Android UA 文字列の組み合わせでフィルタリングできます (上記では、Chrome ブラウザであると推測できます)。

これが私のサンプル JavaScript コードです。

(特定のスタイリングが必要な場合は、次の JS スニペットを使用してボディにクラスを追加します)

var defectAndroid = $window.navigator && $window.navigator.userAgent.indexOf('534.30') > 0 && $window.navigator.userAgent.toLowerCase().match(/android/);

if (defectAndroid) {
   // sample code specific for your Android Stock browser
}

(一部の Android デバイスでは「android」と報告されるため、小文字の会話が必要です)

于 2014-11-03T16:12:23.770 に答える
-2

正規表現から SamsungBrowser を削除する必要があります。

SamSungBrowser の場合、古いブラウザの場合は SamsungBrowser/([0-9]*.[0-9]*) または Android.*SAMSUNG.*Version/([0-9]*.[0-9]*) を使用できます。

http://developer.samsung.com/technical-doc/view.do?v=T000000203

于 2016-08-19T14:38:26.703 に答える