Android WebView HTTP Cookie无法在API 21中运行

时间:2015-02-09 20:27:34

标签: android cookies webview

我有一个使用WebView和HTTP cookie的Android应用程序。此应用程序适用于运行API 19或更低版本的Android设备。 API 21未保存http cookie以供日后参考。

Android WebView代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_token);
    WebView mWebView = (WebView) findViewById(R.id.activity_main_webView1);
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    mWebView.setWebViewClient(new WebViewClient());
    mWebView.setWebChromeClient(new WebChromeClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            return false;
        }
    });
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setGeolocationEnabled(true);
    mWebView.getSettings().setAppCacheEnabled(true);
    mWebView.getSettings().setDatabaseEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    mWebView.loadUrl("file:///android_asset/index.html");
}

Android清单

uses-sdk android:minSdkVersion="16" android:targetSdkVersion="19"
uses-permission android:name="android.permission.INTERNET"

创建Cookie的服务器端代码:

Response.Cookies("mycookie")("myvalue") = "123456789"
Response.Cookies("mycookie").Expires = Date() + 10
Response.Cookies("mycookie").Secure = True

服务器端代码阅读Cookie:

Response.Write Request.Cookies("mycookie")("myvalue")
  • 这将在WebView
  • 中的API 21上返回空白值

当它在API 19或更低版本上运行时,我可以读/写cookie没问题。我正在使用cookie访问任何使用cookie的网页。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:17)

API 21或Lollipop要求将其添加到您的APP

if (Build.VERSION.SDK_INT >= 21) {
    // AppRTC requires third party cookies to work
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptThirdPartyCookies(mWebView, true);
}

再次工作!