2015-05-19 22 views
0

我使用下面的代碼,因爲許多帖子建議修改CordovaWebView將使用的用戶代理字符串。但是,我從來沒有收到任何到服務器的http請求中的用戶代理字符串。我得到通常的用戶代理字符串。在Android 4.4(科爾多瓦4.3)修改CordovaWebView用戶代理字符串GWT

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科爾多瓦容器。 GWT主機頁面指定一個緩存清單。從CordovaWebView到服務器的緩存清單調用不包含修改後的用戶代理字符串。

任何想法爲什麼不呢?

我試圖通過分析服務器上收到的用戶代理字符串來檢測應用程序是在Cordova容器還是移動瀏覽器中運行,以便我可以提供正確的緩存清單。

回答

1

我正在尋找相同的解決方案。現在我發現了以下選項。

看來開發人員正在開發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]; 
+0

Out of inter估計你是暗示window.location.assign = 導致CordovaWebView啓動在應用程序瀏覽器?那是對的嗎?如果我沒有將應用程序瀏覽器安裝爲插件,會發生什麼 – paul

+0

其實我不確定這是否是問題。在我的CordovaWebView中,我做了window.location.assign = 。載入的仍然可以訪問Cordova API,這向我建議我不打開i​​nAppBrowser – paul

+0

我仍在試驗。我也試圖使用cdvfile://包含所需的js文件。如果這樣的話,safari瀏覽器會忽略它,然後我不會需要修改用戶代理。現在我已經放棄了 – michaelbn