Android WebView js混合cookie和localStorage存储
一、cookie存储和取出:
(1)存储:
-------------------
**在loadURL之前调用**
-------------------- /**
* 同步一下cookie
*/
public void synCookies(String url) {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.acceptCookie();
cookieManager.removeSessionCookie();// 移除
cookieManager.removeAllCookie();
/**
* cookies是在HttpClient中获得的cookie
*/
String token = (String) SpUtils.getParam(getApplicationContext(), Constant.TOKEN, "'");
String phone = (String) SpUtils.getParam(getApplicationContext(), Constant.PHONENUMBER, "'");
if (TextUtils.isEmpty(token)) {
return;
}
cookieManager.setCookie(url, Constant.UICPS_USERID + "=" + token);
cookieManager.setCookie(url, Constant.UICPS_USERPHONE + "=" + phone);
/**
* 判断系统当前版本,同步方式不一样
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
cookieManager.flush();
} else {
CookieSyncManager.createInstance(getApplicationContext()).sync();
}
}
(2)取出:
url:web地址
if (CookieManager.getInstance().hasCookies()) {//如果存在token就获取
String cookies = CookieManager.getInstance().getCookie(url);
}
二、LocalStorage存储和取出: 设置LocalStorage 在onPageFinished中调用
(1)存储
第一步:设置
//存储设置
webSettings.setDomStorageEnabled(true);
webSettings.setAppCacheMaxSize(1024 * 1024 * 8);
String appCachePath = getContext().getCacheDir().getAbsolutePath();
webSettings.setAppCachePath(appCachePath);
第二步:存储
/**
* 网页加载完毕
*/
@Override
protected void onPageFinished(WebView view, String url) {
writeLocalStorage();
} /**
* 写入LocalStorage
*/
private void writeLocalStorage() {
String token = (String) SpUtils.getParam(getApplicationContext(), Constant.TOKEN, "");
String phone = (String) SpUtils.getParam(getApplicationContext(), Constant.PHONENUMBER, "");
if (TextUtils.isEmpty(token)) {
return;
}
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
if (contentWebView != null) {
contentWebView.evaluateJavascript("window.localStorage.setItem('" + Constant.UICPS_USERID + "','" + token + "');", null);
contentWebView.evaluateJavascript("window.localStorage.setItem('" + Constant.UICPS_USERPHONE + "','" + phone + "');", null);
}
} else {
if (contentWebView != null) {
contentWebView.loadUrl("javascript:localStorage.setItem('" + Constant.UICPS_USERID + "','" + token + "');");
contentWebView.loadUrl("javascript:localStorage.setItem('" + Constant.UICPS_USERPHONE + "','" + phone + "');");
}
}
}
(2)取出
在前端取出
//token为存入的key值
localStorage.getItem("token")
web 参考API:
https://blog.csdn.net/CodingEnding/article/details/78898210
Android WebView js混合cookie和localStorage存储的更多相关文章
- JS操作cookie以及本地存储(sessionStorage 和 localStorage )
JS操作cookie cookie的操作用两种方式 1.substring //创建cookie function setCookie(name,value,expires,path,domain,s ...
- js中cookie,localStorage(sessionStorage)的存取
一.cookie (原生的不好用,自己简单封装) 1. 存cookie的方法: function setCookie(c_name,value,expiredays) { var exdate=new ...
- android webview js交互 第一节 (java和js交互)
转载请注明出处 挺帅的移动开发专栏 http://blog.csdn.net/wangtingshuai/article/details/8631835 在androi ...
- 【WebView】Android WebView中的Cookie操作
Hybrid App(混合式应用)的开发过程中少不了与WebView的交互,在涉及到账户体系的产品中,包含了一种登录状态的传递.比如,在Native(原生)界面的登录操作,进入到Web界面时,涉及到账 ...
- JS中Cookie、localStorage、sessionStorage三者的区别
cookie:大小4k,一般由服务器生成,可设置失效时间,关闭浏览器后失效,与服务器通信时:每次都会携带HTTP头中,如果使用cookie保存过多数据会带来性能问题 localhostStorage: ...
- android webview setcookie 设置cookie
CookieSyncManager.createInstance(mWebView.getContext()); CookieManager cookieManager = CookieManager ...
- Android webview js 调用java方法报错"Uncaught TypeError: Object [object Object] has no method xx
webview开发,在Android4.4下js调用java方法报错"Uncaught TypeError: Object [object Object] has no method,同样的 ...
- android webview js alert对话框 不能弹出 解决办法
在配置了webview的 setting属性后,以前设置的都是可以直接弹出来的,今天写一个小demo时候莫名其妙的发现alert怎么也出来,即使设置了这么多也不行: webSettings.setJa ...
- js里cookie操作
原生js操作cookie 创建和存储 cookie 在这个例子中我们要创建一个存储访问者名字的 cookie.当访问者首次访问网站时,他们会被要求填写姓名.名字会存储于 cookie 中.当访问者再次 ...
随机推荐
- 解决VScode无法输出中文的问题
VScode输出框输出不了中文 解决方法: 在环境变量里面增加:PYTHONIOENCODING为UTF-8 重启vscode即可
- inxi 查看国产服务器的硬件配置信息
下载inxi 查看国产服务器的信息 https://codeload.github.com/smxi/inxi/tar.gz/3.0.35-1 注意查看命令是 ./inxi -F 2. 直接是二进制包 ...
- Wordpress 所有 hook 钩子
muplugins_loaded 在必须使用的插件加载之后. registered_taxonomy 对于类别,post_tag 等 Registered_post_type 用于帖子,页面等 plu ...
- 什么是阿里云ACE认证
作为国内最大的云计算服务商,阿里云不仅引领着中国云计算技术在全球范围内扩大版图,同时还责无旁贷的承担着培养.壮大中国云生态人才力量的使命. 阿里云自2015年推出国内首个公有云技术认证以来,短短三年已 ...
- SQL Server 2019 Linux Docker 在主机上以其他非根用户的身份运行容器
docker logs mssql2019SQL Server 2019 will run as non-root by default.This container is running as us ...
- 取整math函数
floor(a); ceil(a);
- python商城项目总结
项目概括 本项目用于针对Django框架的练习,主要分为前端和后端两部分.前端负责用户注册.登录.商品展示以及添加购物车和显示订单列表的功能:后端负责会员信息.商品类别.商品信息的增删改查以及订单状态 ...
- 快速开启关闭mysql,批命令方便!
很多python开发人员和我一样,都会在自己的电脑上配置一个python开发的环境,便于开发和学习使用,比如我现在电脑上使用的就是mysql数据库,而我的电脑配置又比较低,电脑运行起来会出现卡慢的情况 ...
- CSS float和position属性
1. 浮动 CSS float属性定义了元素在水平方向的浮动.该元素从网页的正常流动(文档流)中移除,对于浮动元素后的块级元素,块级元素将会被浮动元素覆盖,并且会接着其上一个文档流中的元素,按文档流的 ...
- Feign的雪崩处理
在声明式远程服务调用Feign中,实现服务灾难性雪崩效应处理也是通过Hystrix实现的.而feign启动器spring-cloud-starter-feign中是包含Hystrix相关依赖的.如果只 ...