如何为Cordova Android应用程序设置自定义用户代理字符串?

时间:2015-01-21 18:47:01

标签: java android cordova

我正在尝试为我的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);

0 个答案:

没有答案