Подтвердить что ты не робот

Обнаружение внутри Android-браузера или WebView

Как Javascript может определить, загружен ли сайт в Android-браузер или загружен в WebView другого приложения? Я хотел бы запустить немного другой код в этих двух случаях.

4b9b3361

Ответ 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