39 votes

Détecter à l'intérieur du navigateur Android ou WebView

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

56voto

JoJo Points 4297

Activité -> onCreate

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

Res -> Valeurs -> strings.xml

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

Javascript

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

5voto

Sean Points 289

Vous pouvez vérifier les variables du serveur sur la page qui est demandée pour voir si elle provient 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;';
  • remplacer com.company.app par le nom de votre forfait

2voto

pera Points 392

Dans les nouvelles versions de WebView, Lollipop et supérieures, vous pouvez différencier le 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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X