Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Cookie未存储在Android Webview中_Javascript_Java_Android_Cookies_Webview - Fatal编程技术网

Javascript Cookie未存储在Android Webview中

Javascript Cookie未存储在Android Webview中,javascript,java,android,cookies,webview,Javascript,Java,Android,Cookies,Webview,我有一个纯HTML+CSS+JS应用程序,我正试图使用Webview将其嵌入到Android应用程序中。该应用程序运行正常,只是没有存储cookies。我已经尝试过这些QA中的建议,但它们似乎都不起作用: 以下是我在活动中启动WebView的方式: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView

我有一个纯HTML+CSS+JS应用程序,我正试图使用Webview将其嵌入到Android应用程序中。该应用程序运行正常,只是没有存储cookies。我已经尝试过这些QA中的建议,但它们似乎都不起作用:

以下是我在活动中启动WebView的方式:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    cookieManager.acceptCookie();
    cookieManager.setAcceptFileSchemeCookies(true);

    WebView webView = (WebView) findViewById(R.id.webView1);
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setDomStorageEnabled(true);

    //webView.getSettings().setPluginState(PluginState.ON);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setAllowContentAccess(true);
    if (Build.VERSION.SDK_INT >= 16) {
        webView.getSettings().setAllowFileAccessFromFileURLs(true);
        webView.getSettings().setAllowUniversalAccessFromFileURLs(true);
    }

    webView.loadUrl("file:///android_asset/index.html");

}
下面是JavaScript
createCookie()
方法,它在普通浏览器中完美地工作:

function createCookie(name, value, days) 
{
    value = value.replace(';', COOKIE_ENCODER);

    if (days>=0) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    //else var expires = "";


    document.cookie = name + "=" + value + expires; // + "; path=/";
}
我还尝试使用了
CookieSyncManager
,不过Android Studio建议它的价格有所下降。当调用
createCookie()
方法时,控制台不会显示任何错误,它只是不存储cookie

编辑

下面是用于在JavaScript中读取cookie的
readCookie()
函数的代码。我认为存储cookie的可能性是相同的,但浏览器在回读cookie时遇到了问题:

function readCookie(name) 
{
    //name = name.replace(';',COOKIE_ENCODER);
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0)
        {
            s = c.substring(nameEQ.length, c.length);
            s = s.replace(COOKIE_ENCODER,';');
            return s;
        }
    }
    return null;
}
函数readCookie(名称)
{
//name=name.replace(“;”,COOKIE_编码器);
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i
您可以使用window.localStorage代替cookies

谢谢你,格雷格。是的,这就是我在我的应用程序中实际完成的操作,但也必须有一种保存cookie的方法,因为我们希望使用Webview模拟web浏览器。您是否尝试在PageFinished上初始化CookieManager,就像推荐给不推荐使用的CookieSyncManager一样?是的,但是Android Studio说,
CookieSyncManager
被贬值了。但我还是照做了,即使这样也没有成功(浏览器中仍然没有保存cookie)。此外,我已经在我的设备和模拟器上测试了该应用程序。