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 中.当访问者再次 ...
随机推荐
- git升级与报错问题
一般小于1.7.10的 git 版本会报如下错 error: The requested URL returned error: 401 Unauthorized while accessing 解决 ...
- 使用Java实现hello/hi的简单网络聊天程序
Socket又称套接字,是基于应用服务与TCP/IP通信之间的一个抽象,它是计算机之间进行通信的一种约定或一种方式.通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送 ...
- Linux多线程编程 - sleep 和 pthread_cond_timedwait
#include <stdio.h> #include <stdlib.h> int flag = 1; void * thr_fn(void * arg) { while ...
- 在ASP.NET Core 2.0中使用Facebook进行身份验证
已经很久没有更新自己的技术博客了,自从上个月末来到天津之后把家安顿好,这个月月初开始找工作,由于以前是做.NET开发的,所以找的还是.NET工作,但是天津这边大多还是针对to B(企业)进行定制开发的 ...
- php 简单的 单例模式
php单例模式简单说明 使用注意事项: 1.使用时不能用反射模式创建单例,否则会实例化一个新的对象 2.使用懒单例模式时注意线程安全问题 3.饿单例模式和懒单例模式构造方法都是 ...
- php 连接sqlserver
本地环境windows 10+phpstudy2016+ SQL Server 2008 R2 x86+php7.0查看自己sql server 多少位可以在新建查询里输入 select @@VERS ...
- Python开发之IDE选择
Python开发之IDE 一.为什么用IDE 到现在为止,谁还不是个写过代码的人啦,但你有没有发现,每次写代码要新建文件.写完保存时还要选择存放地点,执行时还要切换到命令行调用python解释器,好麻 ...
- python---博客分类目录
python基础 python函数 python模块 python面向对象 网络编程 并发编程 数据库 前端学习 HTML基础 CSS基础 JavaScript基础 js操作BOM和DOM jQuer ...
- WEB小计
使用vue的事件绑定时,应当使用.stop来阻止事件的传播 html 有捕获和冒泡两种事件机制
- T100——q查询,子母查询(汇总——明细)练习笔记
范例: 代码: #add-point:input段落 name="ui_dialog.input" INPUT BY NAME g_master.bdate,g_master.ed ...