Проблема с файлом Android WebView Cookie

Я пытаюсь создать систему голосования, используя php-cookie в веб-представлении Android, поэтому мой php-скрипт внутри веб-просмотра проверяет, установлен ли cookie, если нет, будет установлен новый cookie и голосование будет увеличено на 1 в mysql db, и пользователь, который голосовал ранее, не может проголосовать снова за ту же фотографию.

Когда я пробую систему голосования в любом браузере, например, в Chrome на телефоне, на компьютере. Работает отлично. Но когда я попробую это на андроиде. Файл cookie не управляется должным образом, и, похоже, есть ошибка, из-за которой я могу голосовать несколько раз за одну фотографию. Тем не менее, на Android L WebView, это работает отлично. В случае использования Kitkat и других версий, имеющих эту проблему с файлами cookie, файл cookie не обрабатывается должным образом.

Как можно решить эту проблему?
И я знаю, что использование файлов cookie — не самая лучшая идея, однако я хочу найти решение для этого.

Ниже мой класс 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

Решение

У меня есть догадка, что это может быть потому, что вы не используете некоторые устаревшие методы (своего рода нелогичные), которые требуются для работы файлов cookie до Lollipop. На леденце и за его пределами CookieManager Синглтон прекрасно работает сам по себе, однако до Lollipop также требовалось использование дополнительного статического метода от CookieSyncManager. Приведенный ниже код работает для меня на всех версиях Android при установке файлов cookie в WebView.

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

Это инициализирует CookieSyncManager и позволяет куки работать должным образом до Lollipop. Дайте мне знать, если это работает или нет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]