Webviewを使用してAndroidアプリに埋め込みたい、純粋なHTML + CSS + JSアプリがあります。アプリはすべて正常に動作しますが、クッキーは保存されません。私はすでに、これらのQAでの提案を試みたが、それらのどれも動作するようには思えません:クッキーがAndroid Webviewに保存されていません
Make Android WebView not store cookies or passwords
Cookie doesn't work properly in webview in android
Android WebView HTTP Cookies not working in API 21
これは私がWebViewのを開始する方法です私の活動の中で:
そして、ここで完璧通常のブラウザで動作する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=/";
}
Androidのメーカーは、その減価償却ことを示唆しても、私もCookieSyncManager
を使用してみました。 createCookie()
メソッドが呼び出されたときにコンソールにエラーが表示されず、クッキーは保存されません。
編集以下
はJavaScriptでクッキーを読み取るために使用されるreadCookie()
関数のコードです。私はクッキーが保存されていることをその同様に可能だと思いますが、ブラウザはそれを読み戻すに問題を抱えている:
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;
}
ありがとう、グレッグ。はい、それは私のアプリで実際にやったことですが、Webviewでウェブブラウザをエミュレートしたいので、クッキーを保存する方法もなければなりません。 –
推奨されていないCookieSyncManagerのように、CookieManager onPageFinishedを初期化しようとしましたか? https://stackoverflow.com/questions/8390156/how-to-save-a-cookie-in-an-android-webview-forever –
私はしましたが、Android Studioでは「CookieSyncManager」が償却されています。しかし、とにかくそれをやっても、うまく動作しませんでした(まだブラウザに保存されているクッキーはありません)。また、デバイスとエミュレータの両方でアプリをテストしました。 –