您的位置:首页 > 移动开发

webview添加cookie有时失效

2014-07-11 19:09 337 查看

转载:http://code.walletapp.net/post/46414301269/passing-cookie-to-webview


Passing cookie to webview

In few following lines I will describe my solution, how to pass cookies from DefaultHttpClient to WebView component. I was following many tutorials, but cookies weren’t send to WebView properly (in my Android 2.2). After several experiments I found out that
it is working, when we wait a little time between removeSessionCookie and setCookie methods. I don’t know why. But important is, that it is working right now for me.

Look at the following source code:

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
public class WebViewActivity extends Activity {   WebView myWebView; 	private final static String TAG = "WebView"; 	@Override	protected void onCreate(Bundle savedInstanceState) {				super.onCreate(savedInstanceState); 		setContentView(R.layout.webview); 		myWebView = (WebView) findViewById(R.id.webview);                           new WebViewTask().execute();        }         private class WebViewTask extends AsyncTask<Void, Void, Boolean> {		String sessionCookie;		CookieManager cookieManager; 	        @Override		protected void onPreExecute() {			CookieSyncManager.createInstance(WebViewActivity.this);			cookieManager = CookieManager.getInstance();                        			sessionCookie = new PersistentConfig(getApplicationContext()).getCookieString();			if (sessionCookie != null) {                                /* delete old cookies */				cookieManager.removeSessionCookie(); 			}			super.onPreExecute();		}		protected Boolean doInBackground(Void... param) {                        /* this is very important - THIS IS THE HACK */			SystemClock.sleep(1000);			return false;		}		@Override		protected void onPostExecute(Boolean result) {			if (sessionCookie != null) {				cookieManager.setCookie("yourdomain.com", sessionCookie);				CookieSyncManager.getInstance().sync();			}			WebSettings webSettings = myWebView.getSettings();			webSettings.setJavaScriptEnabled(true);			webSettings.setBuiltInZoomControls(true);			myWebView.setWebViewClient(new WebViewClient() {				@Override				public boolean shouldOverrideUrlLoading(WebView view, String url) {					return super.shouldOverrideUrlLoading(view, url);				}							});			myWebView.loadUrl("https://yourdomain.com/anything");		}	}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: