修改 android 4.4 (Cordova 4.3) GWT 中的 CordovaWebView 用户代理字符串

Modify CordovaWebView user agent string in android 4.4 (Cordova 4.3) GWT

我使用下面的代码,因为许多帖子建议修改 CordovaWebView 将使用的用户代理字符串。但是,我从未在对服务器的任何 http 请求中收到此用户代理字符串。我得到了通常的用户代理字符串。

public class MainActivity extends CordovaActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();
    CordovaWebView.setWebContentsDebuggingEnabled(true);
    loadUrl(launchUrl);
}

@Override
protected CordovaWebView makeWebView() {
  CordovaWebView cordovaWebView = super.makeWebView();
  WebSettings settings = cordovaWebView.getSettings();
  settings.setUserAgentString(settings.getUserAgentString()+" phonegap.env=yes");
  settings.setAppCacheEnabled(true);
  settings.setAppCachePath(getApplicationContext().getDir("html5-cache",MODE_PRIVATE).getAbsolutePath());
  return cordovaWebView;
}

我正在将 GWT 应用程序从服务器加载到 Android Cordova 容器中。 GWT 主机页面指定缓存清单。从 CordovaWebView 对缓存清单的服务器调用不包含修改后的用户代理字符串。

有什么想法吗?

我正在尝试通过分析服务器上收到的用户代理字符串来检测应用程序是 运行 在 Cordova 容器中还是在移动浏览器中,以便我可以提供正确的缓存清单。

我正在寻找相同的解决方案。现在我找到了以下选项。

开发人员似乎正在努力 feature 以安全启用它。

如果你等不及了 another way

更新 - CB-3360 之前我的临时解决方案已经过期

为了更改用户代理,我编辑了文件:CDVViewController.m 第 614 行(在 IOS 上)

发件人:

_userAgent = [NSString stringWithFormat:@"%@ (%lld)", localBaseUserAgent, (long long)self];

至:

_userAgent = [NSString stringWithFormat:@"%@ (%lld) MY EXTRA STRING", localBaseUserAgent, (long long)self];