15

ユーザーが携帯電話会社にログインできるようにする WebView ベースの Android アプリを作成しています。アプリを実行すると、WebView で Web サイトが開きますが、WebView で Cookie が許可されていないというメッセージが表示されます。ここで見つけたさまざまなコードを試しましたが、どれも機能しませんでした。誰でも私を助けることができますか?私が使用しているコードは次のとおりです。

//in oncreate
final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
final CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
String[] cookies = getCookie("https://myaccount.ee.co.uk/login-dispatch/?fa=register");
for (String cookie : cookies) {
    cookieManager.setCookie("https://myaccount.ee.co.uk/login-dispatch/?fa=register", cookie);
}
cookieSyncManager.sync();
webView.loadUrl("https://myaccount.ee.co.uk/login-dispatch/?fa=register");

および getCookies メソッド:

public String[] getCookie(String siteName) {
     CookieManager cookieManager = CookieManager.getInstance();
     String cookies = cookieManager.getCookie(siteName);
     String[] cookiesArray = cookies.split(";");
     return cookiesArray;
}
4

5 に答える 5

8

Try to override the shouldOverrideUrlLoading method to make your WebView handle all URL links, and not start a new browser on any link.

webview.setWebViewClient(new WebViewClient() {  
          @Override  
          public boolean shouldOverrideUrlLoading(WebView view, String url)  
          {  
            return false;  
          }  
});   

webview.loadUrl(url);

If this doesn't work you can replace your

cookieManager.setAcceptCookie(true);

to

cookieManager.setAcceptThirdPartyCookies(true);

because cookieManager.setAcceptCookie(true); doesn't work on Lollipop.

于 2015-12-08T02:23:04.307 に答える
0

多くの場合、ログインには JavaScript が必要です。これを前に追加してみてくださいloadUrl:

webView.getSettings().setJavaScriptEnabled(true);

于 2015-12-09T00:05:57.077 に答える
0

@ダルコ。

CookieManager.getInstance()アプリケーション全体の CookieManager インスタンスです。したがって、アプリケーション内のすべての Web ビューに対して Cookie を有効または無効にします。

通常、webview が既に初期化されている場合は機能するはずです: http://developer.android.com/reference/android/webkit/CookieManager.html#getInstance()

WebView を初期化する前に電話するかもしれませんCookieManager.getInstance().setAcceptCookie(true);

ありがとう、

于 2015-12-09T05:43:26.333 に答える