web-dev-qa-db-fra.com

Détecter dans le navigateur Android ou WebView

Comment Javascript peut-il détecter si un site Web est chargé dans le navigateur Android ou dans une vue Web d'une autre application? Je voudrais courir le code légèrement différent dans ces deux cas.

35
JoJo

Activité -> onCreate

this.webView.getSettings().setUserAgentString(
    this.webView.getSettings().getUserAgentString() 
    + " "
    + getString(R.string.user_agent_suffix)
);

Res -> Values ​​-> strings.xml

<string name="user_agent_suffix">AppName/1.0</string>

Javascript

function() isNativeApp {
    return /AppName\/[0-9\.]+$/.test(navigator.userAgent);
}
52
JoJo

Vous pouvez vérifier les variables du serveur sur la page demandée pour voir si elles proviennent de votre application et définir une variable javascript en conséquence.

if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app")
    echo 'var isAndroidApp=true;';
else
    echo 'var isAndroidApp=false;';
  • remplacez com.company.app par votre nom de paquet
5
Sean

Dans les versions les plus récentes de WebView, Lollipop et versions ultérieures, vous pouvez différencier WebView en recherchant le champ wv dans la chaîne de l'agent utilisateur:

Mozilla/5.0 (Linux; Android 5.1.1; Nexus 5 Build/LMY48B; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/43.0.2357.65 Mobile Safari/537.36

https://developer.chrome.com/multidevice/user-agent#webview_user_agent

0
pera