4

WebView 内で JavaScript を使用して Cookie を設定しようとしています。webview はローカルのアセット ディレクトリから次のように読み込まれます (ページは "index.html" などの文字列です)。

engine.loadUrl("file:///android_asset/" + page);

まったく同じファイルが Web (つまりhttp://www.domain.com/index.html ) から読み込まれると、同じファイルが期待どおりに Cookie を設定できることがわかりました。

Android の古いバージョンでは、ローカル ファイルに Cookie を作成できますが、新しいバージョンではできません。これをテストしたところ、Samsung Galaxy Ace、HTC Desire Z、下位 SDK の Eclipse エミュレーターでは動作しますが、Samsung SIII や Samsung Tab 10.1 では動作しません。

WebView のページ間でデータをやり取りするには、Cookie を設定する必要があります。検索結果を保存して再表示します。

これらのローカルファイルの問題を回避するための方法/ハックを誰かが知っていれば、本当に感謝しています. 私はこれを約8週間続けています。さらに読むのに役立つ可能性のある類似の質問をしましたが、問題が特定されており、まったく別の質問であるため、ここで質問しています。Android WebView Cookie が null を返す

ありがとう。

4

2 に答える 2

0

私はあなたが説明したような同様のユースケースを扱ってきました。これが私が取ったアプローチです

  • Cordova WebView に直接 Cookie を設定する必要がある場合 (ファイル スキーム Cookie など):

    CookieManager.getInstance().setCookie("/", "MyCookie=xxx");
    
  • JS ライブラリがファイル スキーム Cookie を作成し (ファイル システムから読み込まれるため)、「ネイティブ」レイヤーでそれらの値をフェッチする必要がある場合は、次のようにします。

    CookieManager.getInstance().getCookie("file://");
    

後者は、すべてのファイル スキーム Cookie の長い文字列を返します。これを配列に分割して、1 つずつ解析できます。

お役に立てれば。

于 2017-03-06T21:49:45.413 に答える