Android WebView Cookie问题

时间:2015-04-18 14:47:50

标签: php android mysql cookies webview

我正在尝试在Android Webview上使用php-cookies构建投票系统,因此我在webview中的php脚本会检查cookie是否已设置,如果不是,则会设置新cookie并且投票将增加1 in mysql数据库,以及之前投票的用户不能再为同一张图片投票。

当我在任何浏览器上尝试投票系统时,例如手机,电脑上的镀铬。它很棒。但是当我在android webview上尝试它时。 cookie没有得到妥善管理,而且似乎有一个错误,我可以多次为一张图片投票。但是,在Android L webview上,这是完美的。 Kitkat和以下口味有这个问题的cookie,cookie没有妥善管理。

如何解决这个问题? 我知道使用cookie并不是一个好主意,但需要一个解决方案。

下面是我的webview的java类

public class Review extends Activity {
    WebView mWeb;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_review);
        mWeb = (WebView) findViewById(R.id.mWeb);
        mWeb.setBackgroundColor(0x00000000);
        mWeb.getSettings().setJavaScriptEnabled(true);
        mWeb.setWebViewClient(new WebViewClient());

        mWeb.loadUrl("http://somewebsite.com/review.php");
        CookieManager.getInstance().setAcceptCookie(true);
    }
}

非常感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:0)

我有一种预感,可能是因为你没有使用cookie在Lollipop之前工作所需的一些弃用方法(有点反直觉)。在Lollipop及更高版本中, CookieManager 单例本身可以正常工作,但是,在Lollipop之前,它还需要使用 CookieSyncManager 中的其他静态方法。在WebView上设置cookie时,以下代码适用于所有Android版本。

CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    CookieSyncManager.createInstance(this);
}
cookieManager.setAcceptCookie(true);

这会初始化CookieSyncManager并允许cookie在Lollipop之前正常工作。让我知道这是否有效。