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