我有一個「本機」登錄屏幕,它設置一個靜態cookie,然後這個活動從LoginWebView獲取cookie。 我正在做一個異步任務。 現在的問題是,異步任務包含3個非常醜陋的黑客,這使得代碼非常不可靠(黑客標記在下面的代碼中)。異步任務,Web視圖,餅乾 - Android
問題是,你有什麼想法如何擺脫這些醜陋的黑客中的一個或多個?
哈克NR 1 - 這是從一個例子,有人張貼在這裏對堆棧溢出服用,餅乾需要等待一個位之前,它的實際工作,並加載在web視圖,我不知道爲什麼,但沒有它它只是不起作用。但這並不是最大的問題。
哈克NR 2 - 我不知道爲什麼,但如果我想能夠加載其他頁面我得先加載,我從拿到的cookie的網頁。當這個被加載時,我只需稍等一會,然後加載另一個url。有誰知道爲什麼? 如果我不這樣做,webview認識到cookie在那裏,但不會完成加載任何頁面,它只是加載和永不完成。
哈克NR 3 - 這只是補救黑客NR 2
private class WebViewTask extends AsyncTask<Void, Void, Boolean> {
String cookieString1;
CookieManager cookieManager;
@Override
protected void onPreExecute() {
Cookie sessionCookie = LoginWebView.cookie1;
CookieSyncManager.createInstance(WebViewActivity.this);
cookieManager = CookieManager.getInstance();
cookieString1 = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; " +
"domain=" + sessionCookie.getDomain();
CookieSyncManager.getInstance();
//cookieManager.removeSessionCookie();
super.onPreExecute();
}
protected Boolean doInBackground(Void... param) {
// HACK NR.1
SystemClock.sleep(600);
return false;
}
@Override
protected void onPostExecute(Boolean result) {
Log.v(TAG, "COOKIE SYNC 1: " + cookieString1);
Log.v(TAG, "COOKIE SYNC 1: " + domain);
cookieManager.setCookie(domain, cookieString1);
CookieSyncManager.getInstance().sync();
WebSettings webSettings = webView.getSettings();
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.i(TAG, "Loading...");
view.loadUrl(url);
return true;
}
});
//HACK NR 2
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
webView.loadUrl(domain);
Log.v(TAG, "PROGRESS " + webView.getProgress());
button1.setChecked(true);
if(webView.getProgress() == 100) {
//HACK NR. 3
SystemClock.sleep(80);
webView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
clickButtonOne();
}
}
}
你真的有使用的AsyncTask?你不能只使用你的線程? – Yar 2011-04-29 08:43:05
這是我第一次嘗試,但它是同樣的問題! – 2011-04-29 09:11:49