Как Javascript может определить, загружен ли сайт в Android-браузер или загружен в WebView другого приложения? Я хотел бы запустить немного другой код в этих двух случаях.
Обнаружение внутри Android-браузера или WebView
Ответ 1
Активность → onCreate
this.webView.getSettings().setUserAgentString(
this.webView.getSettings().getUserAgentString()
+ " "
+ getString(R.string.user_agent_suffix)
);
Res → Значения → strings.xml
<string name="user_agent_suffix">AppName/1.0</string>
Javascript
function() isNativeApp {
return /AppName\/[0-9\.]+$/.test(navigator.userAgent);
}
Ответ 2
Вы можете проверить переменные сервера на запрашиваемой странице, чтобы узнать, поступает ли оно от вашего приложения, и соответственно установить переменную javascript.
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app")
echo 'var isAndroidApp=true;';
else
echo 'var isAndroidApp=false;';
- заменить com.company.app с именем вашего пакета
Ответ 3
В более новых версиях WebView, Lollipop и выше вы можете дифференцировать WebView, ища поле wv в строке агента пользователя:
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