WebViewベースのAndroidアプリを作成しています。これにより、ユーザーは携帯電話会社にログインできます。アプリを実行すると、WebViewはWebサイトを開きますが、WebViewが開かないというメッセージが表示されます。クッキーを許可します。ここで見つけたさまざまなコードを試しましたが、どれも機能しませんでした。誰か助けてもらえますか?使用しているコードは次のとおりです。
//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;
}
shouldOverrideUrlLoading
メソッドをオーバーライドして、WebViewがすべてのURLリンクを処理するようにし、どのリンクでも新しいブラウザを起動しないようにしてください。
_webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
});
webview.loadUrl(url);
_
これが機能しない場合は、
_cookieManager.setAcceptCookie(true);
_
に
_cookieManager.setAcceptThirdPartyCookies(true);
_
cookieManager.setAcceptCookie(true);
はLollipopでは機能しないためです。
チェックしましたか Androidドキュメント ?
APIレベル> = 21を使用している場合、WebViewは自動的にCookieを同期します。
これを試さない場合:
final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
final CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
cookieManager.setAcceptCookie(true);
String[] cookies = getCookie(cookieManager, "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(CookieManager cookieManager, String siteName){
String cookies = cookieManager.getCookie(siteName);
String[] cookiesArray=cookies.split(";");
return cookiesArray;
}
Javascriptを有効にしてから、Cookieマネージャのインスタンスを取得してCookieを受け入れる必要があります。javascriptenableを使用すると、Cookieが保存されます。
webView.getSettings()。setJavaScriptEnabled(true); CookieManager.getInstance()。setAcceptCookie(true);
@Darko。
CookieManager.getInstance()
は、アプリケーション全体のCookieManagerインスタンスです。したがって、アプリケーション内のすべてのWebビューに対してCookieを有効または無効にします。
通常、Webビューがすでに初期化されている場合は機能するはずです: http://developer.Android.com/reference/Android/webkit/CookieManager.html#getInstance()
Webビューを初期化する前にCookieManager.getInstance().setAcceptCookie(true);
を呼び出すかもしれません。
ありがとう、
多くの場合、ログインにはjavascriptが必要です。これを、loadUrl
の前に追加してみてください。
webView.getSettings().setJavaScriptEnabled(true);