我们需要和web服务器保持登录状态。所以我们需要记录sessionid;

我们将网页用webview加载之后,用CookieManager 来获取本地的cookies 。然后设置到webview里面去。

我们可以在下面这个回调方法中获取到。并且保存到sharedpreferences中去

然后我们在mWebView.loadUrl(url);之前设置一下cookies

就基本套路来说就是这样。不过在设置之后 不能在添加:

// 支持javascript

mWebView.getSettings().setJavaScriptEnabled(true);

// 设置出现缩放工具

mWebView.getSettings().setBuiltInZoomControls(false);

否则设置的cookies不起作用。。。。。

上个完整代码 :

布局文件中:

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context="test.yihan.testweb.MainActivity">

android:layout_width="match_parent"

android:layout_height="match_parent"

/>

activity中:

public class MainActivity extends AppCompatActivity {

String cookies = "";

SharedPreferences sp;

String url = "http://shop.beishute.com.cn/wx_beishute_rtm/index.php/Home/About/index.html";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//创建一个sharedpreferences

sp = getSharedPreferences("aaa", MODE_PRIVATE);

WebView mWebView = (WebView) findViewById(R.id.webview);

// 自适应屏幕

mWebView.getSettings()

.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);

mWebView.getSettings().setLoadWithOverviewMode(true);

// 支持javascript

mWebView.getSettings().setJavaScriptEnabled(true);

// 设置可以支持缩放

mWebView.getSettings().setSupportZoom(false);

// 设置出现缩放工具

mWebView.getSettings().setBuiltInZoomControls(false);

// 扩大比例的缩放

mWebView.getSettings().setUseWideViewPort(false);

mWebView.setWebChromeClient(new MyWebChromeClient());

mWebView.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url); // 在当前的webview中跳转到新的url

//获取cookies

CookieManager cm = CookieManager.getInstance();

String cookies = cm.getCookie(url);

sp.edit().putString("cook", cookies).apply();

return true;

}

});

synCookies(this, sp.getString("cook", ""));

mWebView.loadUrl(url);

}

/**

* 同步一下cookie

*/

public void synCookies(Context context, String url) {

CookieSyncManager.createInstance(context);

CookieManager cookieManager = CookieManager.getInstance();

cookieManager.setAcceptCookie(true);

// cookieManager.removeSessionCookie();//移除

cookieManager.setCookie(url, cookies);

CookieSyncManager.getInstance().sync();

}

final Context myApp = this;

final class MyWebChromeClient extends WebChromeClient {

@Override

public boolean onJsConfirm(WebView view, String url, final String message, final JsResult result) {

new AlertDialog.Builder(myApp)

// .setTitle("App Titler")

.setMessage(message)

.setPositiveButton(android.R.string.ok,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

if (message.equals("确定要退出吗?")) {

result.confirm();

finish();

} else {

result.confirm();

}

}

})

.setNegativeButton(android.R.string.cancel,

new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

result.cancel();

}

})

.create()

.show();

return true;

}

}

}

!!! 我们需要注意不用忘了网络权限

android 服务器sessionid,Android用WebView获取sessionid保持登录状态相关推荐

  1. Android服务器django,Android发送发送请求到django服务器csrf失败

    我想我的 Android应用程序能够发送一些信息到我的django服务器.所以我做的Android应用程序发送一个发布请求到mysite /上传页面,django的这个页面的视图将基于post数据工作 ...

  2. android服务器 性能,Android性能优化(中)

    Android性能优化 在上一篇中介绍了性能优化的概念.内存泄漏和性能优化方式 Android性能优化(上) 我们继续说说Android性能优化 数据库性能优化 索引 简单的说,索引就像书本的目录,目 ...

  3. android服务器app,Android APP中使用NanoHTTPD搭建轻量级服务器

    最近接到一个需求,由后台主动给APP发送消息,且对实时性的要求较高. 经过探索评估,发现NanoHTTPD很适合,非常轻便. 本文主要内容如下: 1.依赖导入: 2.设置IP和端口: 3.启动服务和后 ...

  4. android服务器接口测试,Android单元测试:网络接口测试

    在平日的开发中,我们用后台写好给我们接口去获取数据.虽然我们有一些请求接口的工具,可以快速的拿到返回数据.但是在一些异常情况的处理上就不太方便了.我列出以下几个痛点: 快速的查看返回数据与数据的处理. ...

  5. 【Android工具】安卓手机轻松获取硬件数据和状态信息

    可以获取的硬件信息和软件如上图所示. 硬件中的传感器比较好玩,可以获取手机上所有传感器的数据,还能绘制出变化曲线图 总体来说功能比较多,软件界面也非常干净,就是没有移动网络信号和wifi网络信号强度的 ...

  6. android 服务器201,Android端i-jetty服务器开发(八)

    http://blog.csdn.net/kongxx/article/details/7237034 Jetty实战之 嵌入式Jetty运行web app 1. 运行标准的war文件 1.1 首先找 ...

  7. 服务器安装什么文件可以获取密码,服务器ssh密码在哪获取

    服务器ssh密码在哪获取 内容精选 换一换 获取登录密码使用公共镜像创建的云服务器,默认已经安装一键式重置密码插件.如果您忘记密码或密码过期,可以通过重置密码重新设置云服务器登录密码.重置密码使用公共 ...

  8. android 获取sessionid

    android与web服务器要在同一session下通信的问题. 在解决问题前先回顾下Session与Cookie: Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们 ...

  9. android url webview,android - webview获取到当前页面的url

    android - webview获取到当前页面的url 2017-10-23 08:54 访问量: 2958 分类: 技术 使用 webview.getUrl() 即可. 可以完美返回  a.com ...

最新文章

  1. ETSI GS MEC 011,Edge Platform Application Enablement API
  2. echarts地图的基本使用配置
  3. linux gpu 电脑推荐,System76推出具有RTX GPU更大显示器的Oryx Pro Linux笔记本电脑
  4. KNN回归python实现
  5. 回顾2020年那些“领域第一本”,每一本都强烈推荐!
  6. 【vuejs面试题】务必熟知的vuejs面试题「务必收藏」
  7. myeclipse修改maven settings
  8. oracle中主键自增长,Oracle中给主键设置自增长
  9. 中文(语音结果)的文本纠错综述 Chinese Spelling Check
  10. Mac环境安装Win虚拟机
  11. 深度学习相关的硬件配置
  12. 明日之后最新服务器开服时间,明日之后什么时候开服 新服开区详解
  13. Silverlight游戏设计(Game Design):(十三)帝国时代II (Demo) 之 “战争艺术”②
  14. canvans——合并图片
  15. #Paper Reading# Efficient Heterogeneous Collaborative Filtering without NS for Recommendation
  16. 离散学习--笛卡尔积
  17. 从1,3,5,7,9,11,13,15中选3个数(选择可重复)作和得30
  18. 诺贝尔经济学奖计算机,诺贝尔经济学奖获得者克鲁格曼曾经指出:在经历数千年之后,现代社会运用大型计算机,对成千上万的因素进行...
  19. 51单片机学习笔记之数码管工作原理
  20. 硬件设计——不一二电路设计(电源电路、接口电路、时钟电路)

热门文章

  1. android默认exported_问下android:exported=true有什么用?
  2. bert简介_什么是BERT?
  3. 常见字体颜色值代码表
  4. 中级经济师职称计算机考几科,中级经济师考哪几科
  5. e2实名信息什么意思_你应该知道的实名验证核心信息
  6. Go语言的正则表达式简介
  7. 计算机未来发展趋势多级化,计算机的未来发展趋势
  8. r java 泛型_Java 泛型
  9. 根据Geohash编码画中心点和边框
  10. 求证 intent传递大数据限制