android webview的问题 求救

yuhan963 2011-12-20 04:02:57
有两个问题:
1、用android的UI模拟了登陆,登陆后获取了http的session并保存了下来。
点击某个登陆后显示的图标,该图标链接一个url,此时将之前保存的session带进url发送,可以正常获取网址内容(
这里也有个问题,就是系统启动后,第一次点击的时候不能正常获取内容,再点一次就可以了)。
问题是这个网址内容里面包含一个查询按钮,点击查询后,session并不能继续传递,获取不到结果,此时再点击返回按钮,如果设置了缓存,那么正常的那个页面能重新显示,如果没设置缓存,正常的那个页面也就挂掉了。
代码如下:
//这里if (sessionCookie != null) 那段代码放在shouldOverrideUrlLoading onPageStarted都不起作用
//事实上shouldOverrideUrlLoading的日志都打不出来
webView.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.v("-->>>", "shouldOverrideUrlLoading");
view.loadUrl(url);
return true;
}
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.v("-->>>", "onPageStarted");
super.onPageStarted(view, url, favicon);
}

public void onPageFinished(WebView view, String url) {
Log.v("-->>>", "onPageFinished");
super.onPageFinished(view, url);
}
});

//图标的点击事件
gv_content.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String url = NetUtils.getUrl(subMenuList.get(position).getId());
Log.v("-->>>", "url===="+url);
//加入session
if (sessionCookie != null) {
cookieManager.removeSessionCookie();
String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
Log.v("-->>>", "cookieString="+cookieString);
cookieManager.setCookie(url, cookieString);
CookieSyncManager.getInstance().sync();
}
//在一个tabhost里做的跳转 所以用的viewfillper做的切换
vf_root.showNext();
//加载网址
webView.loadUrl(url);


}
});
2、如果有两个图标,点击了第一个后,再点击第二个,第二个会首先显示第一个图标加载的网址,这里我用了个很笨的方法解决了,各位大大看看有更好的办法么。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(vf_root.getCurrentView().getId()==R.id.ll_web){
//如果网页可以返回则返回到上一网页 否则回到子菜单界面
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
for(int i=0;i<10000;i++){
if("about:blank".equals(webView.getUrl())){
webView.clearHistory();
vf_root.showPrevious();
break;
}
}
}else{
webView.loadUrl("about:blank");
webView.clearHistory();
vf_root.showPrevious();
}
return true;
}
return false;
}

写的比较长,有不清楚的地方,我再补充。
...全文
881 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧