2017-06-02 16 views
0

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

Webview cannot accept cookies

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; 
} 

答えて

1

あなたはwindow.localStorageの代わりにクッキーを使用することができます。 https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

+0

ありがとう、グレッグ。はい、それは私のアプリで実際にやったことですが、Webviewでウェブブラウザをエミュレートしたいので、クッキーを保存する方法もなければなりません。 –

+0

推奨されていないCookieSyncManagerのように、CookieManager onPageFinishedを初期化しようとしましたか? https://stackoverflow.com/questions/8390156/how-to-save-a-cookie-in-an-android-webview-forever –

+0

私はしましたが、Android Studioでは「CookieSyncManager」が償却されています。しかし、とにかくそれをやっても、うまく動作しませんでした(まだブラウザに保存されているクッキーはありません)。また、デバイスとエミュレータの両方でアプリをテストしました。 –

関連する問題