我正在尝试为我的Cordova Android应用程序设置自定义用户代理字符串,以便我们的Web服务器可以区分来自应用程序本身的应用程序请求和来自Android上的浏览器的请求。
目前(基于另一个SO问题的答案)我试图通过将这些行添加到initWebViewSettings来实现这一点:
WebSettings settings = this.getSettings();
settings.setUserAgentString("CUSTOM-ANDROID-USER-AGENT");
这适用于大多数请求,但在某些请求中,我仍然会得到这样的通用用户代理:
Mozilla/5.0 (Linux; Android 4.4.4; XT1034 Build/KXB21.14-L1.41) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Mobile Safari/537.36
因此,我没有可靠的方法来检测应用程序。我不知道为什么我会得到不同的用户代理字符串。是否有更好,更可靠的方法来设置自定义用户代理?或者至少是我可以尝试的另类或其他方式?
注意Stack Overflow上有类似问题的答案,但要么它们已经过时,要么它们没有明确说明需要进行哪些更改(我不知道Java)。我使用的是最新版本的Cordova(4.2)。
以下是我目前正在做的事情(thios在CordovaWebView.java
中):
private void initWebViewSettings() {
this.setInitialScale(0);
this.setVerticalScrollBarEnabled(false);
// TODO: The Activity is the one that should call requestFocus().
if (shouldRequestFocusOnInit()) {
this.requestFocusFromTouch();
}
// Enable JavaScript
WebSettings settings = this.getSettings();
settings.setUserAgentString("CUSTOM-ANDROID-USER-AGENT");
settings.setJavaScriptEnabled(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL);