我正在尝试在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);
}
}
非常感谢任何帮助。 感谢。
答案 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之前正常工作。让我知道这是否有效。