如何使用JavaScript检测当前网站是在安卓系统的原生浏览器中加载还是在其他应用程序的WebView中加载?我想在这两种情况下运行略微不同的代码。
如何使用JavaScript检测当前网站是在安卓系统的原生浏览器中加载还是在其他应用程序的WebView中加载?我想在这两种情况下运行略微不同的代码。
Activity -> 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);
}
navigator.userAgent
'Mozilla/5.0 (Linux; Android 13; SM-G781B Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.5790.166 Mobile Safari/537.36'
- Luckylooke您可以在正在请求的页面上检查服务器变量,以确定它是否来自您的应用程序,并相应地设置一个JavaScript变量。
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app")
echo 'var isAndroidApp=true;';
else
echo 'var isAndroidApp=false;';
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
this.webView.getSettings().setUserAgentString(this.webView.getSettings().getUserAgentString() + getString(R.string.user_agent_suffix))
,其中 user_agent_suffix 是 "AppName/1.0"。我希望这符合用户代理字符串标准。 - JoJo