1. ホーム
  2. java

[解決済み] AndroidにおけるWebViewとCookie

2022-02-14 06:22:07

質問

appspotにあるアプリケーションは、通常のブラウザでは問題なく動作しますが、AndroidのWebViewで使用すると、Cookieを設定したり、読み込んだりすることができません。ちなみに、私はこのWebアプリケーションの外からクッキーを取得しようとしているわけではなく、一度WebViewによってURLが訪問されれば、すべての処理、IDなどはそこにとどまり、私が必要とするのはそのアプリケーション内のセッション管理だけです。最初の画面も問題なくロードされるので、WebView + サーバーのインタラクティブ性は壊れていないことがわかります。

WebSettingsクラスを見てみましたが、setEnableCookiesのような呼び出しはありませんでした。

このようにURLを読み込みます。

public class MyActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);       
    WebView webview = new WebView(this);
    setContentView(webview);      
    webview.loadUrl([MY URL]);
  }
  .. 
}

何かアイデアはありますか?

解決方法は?

何が起こっているのかがわかった

サーバーサイドのアクション(URLの訪問)を通じてページをロードし、そのアクションから返されたhtmlをWebviewの中で見ると、その最初のアクション/ページはそのWebviewの中で実行されるのです。しかし、Webアプリのアクションコマンドであるリンクをクリックすると、これらのアクションは、Webビューの内部で実行されます。 新しいブラウザを起動する . そのため、Webviewに最初に設定したCookie情報が消えてしまうので、ここでは別のプログラムにしています。

ブラウジングがアプリから離れることなく、すべてが同じ Webview 内に留まるように、Webview 上のクリックを妨害する必要があります。

  WebView webview = new WebView(this);      
  webview.setWebViewClient(new WebViewClient() {  
      @Override  
      public boolean shouldOverrideUrlLoading(WebView view, String url)  
      {  
        view.loadUrl(url); //this is controversial - see comments and other answers
        return true;  
      }  
    });                 
  setContentView(webview);      
  webview.loadUrl([MY URL]);

これで不具合は解消されました。