android webview和cookie的关系
答案:2 悬赏:60 手机版
解决时间 2021-03-11 14:56
- 提问者网友:不爱我么
- 2021-03-10 23:03
一般在手机中访问webview都是绑定一个cookie,这个cookie在webview的html页面中通过JS根本就获取不到,简单的说就是document.cookie无法获取到natvie代码绑定在url上的cookie值。请问有没有人知道webview中cookie的存储机制,不是说native代码的cookie机制,那个我知道。
最佳答案
- 五星知识达人网友:掌灯师
- 2021-03-10 23:28
你的WebView设置不正确。
全部回答
- 1楼网友:神鬼未生
- 2021-03-11 00:11
在app中嵌入网页,使用nativie方式登录,然后将cookie保存到webview中,实现免登录功能。同步cookie到webview的方法可以参考下面的代码:
private void synccookie(context context, string url){
try{
log.d("nat: webview.synccookie.url", url);
cookiesyncmanager.createinstance(context);
cookiemanager cookiemanager = cookiemanager.getinstance();
cookiemanager.setacceptcookie(true);
cookiemanager.removesessioncookie();// 移除
cookiemanager.removeallcookie();
string oldcookie = cookiemanager.getcookie(url);
if(oldcookie != null){
log.d("nat: webview.synccookieoutter.oldcookie", oldcookie);
}
stringbuilder sbcookie = new stringbuilder();
sbcookie.append(string.format("jsessionid=%s","input your jsessionid string"));
sbcookie.append(string.format(";domain=%s", "input your domain string"));
sbcookie.append(string.format(";path=%s","input your path string"));
string cookievalue = sbcookie.tostring();
cookiemanager.setcookie(url, cookievalue);
cookiesyncmanager.getinstance().sync();
string newcookie = cookiemanager.getcookie(url);
if(newcookie != null){
log.d("nat: webview.synccookie.newcookie", newcookie);
}
}catch(exception e){
log.e("nat: webview.synccookie failed", e.tostring());
}
}
使用上面的方法可以将cookie同步到webview中,这样浏览网页时即可实现免登录。
但是在实际使用过程中会出现cookie并未保存成功,每次都会跳转到登录页面应为初始化webview时漏掉了重要的东西。可以参考下面代码设置webview。
private void initwebviewsettings(){
// mywebview.getsettings().setsupportzoom(true);
// mywebview.getsettings().setbuiltinzoomcontrols(true);
// mywebview.getsettings().setdefaultfontsize(12);
// mywebview.getsettings().setloadwithoverviewmode(true);
// 设置可以访问文件
mywebview.getsettings().setallowfileaccess(true);
//如果访问的页面中有javascript,则webview必须设置支持javascript
mywebview.getsettings().setjavascriptenabled(true);
mywebview.getsettings().setuseragentstring(myapplication.getuseragent());
mywebview.getsettings().setcachemode(websettings.load_no_cache);
mywebview.getsettings().setallowfileaccess(true);
mywebview.getsettings().setappcacheenabled(true);
mywebview.getsettings().setdomstorageenabled(true);
mywebview.getsettings().setdatabaseenabled(true);
}
完成以上两步操作,再次运行程序,就会发现,打开网页后不会再跳转到登录页面了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯