Android用WebView获取sessionid保持登录状态
2016-11-11 12:02
701 查看
我们需要和web服务器保持登录状态。所以我们需要记录sessionid;
我们将网页用webview加载之后,用CookieManager 来获取本地的cookies 。然后设置到webview里面去。
我们可以在下面这个回调方法中获取到。并且保存到sharedpreferences中去
然后我们在mWebView.loadUrl(url);之前设置一下cookies
就基本套路来说就是这样。不过在设置之后 不能在添加:
// 支持javascript
mWebView.getSettings().setJavaScriptEnabled(true);
// 设置出现缩放工具
mWebView.getSettings().setBuiltInZoomControls(false);
否则设置的cookies不起作用。。。。。
上个完整代码 :
布局文件中:
activity中:
!!! 我们需要注意不用忘了网络权限
我们将网页用webview加载之后,用CookieManager 来获取本地的cookies 。然后设置到webview里面去。
我们可以在下面这个回调方法中获取到。并且保存到sharedpreferences中去
然后我们在mWebView.loadUrl(url);之前设置一下cookies
就基本套路来说就是这样。不过在设置之后 不能在添加:
// 支持javascript
mWebView.getSettings().setJavaScriptEnabled(true);
// 设置出现缩放工具
mWebView.getSettings().setBuiltInZoomControls(false);
否则设置的cookies不起作用。。。。。
上个完整代码 :
布局文件中:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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"> <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
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 WebView 与登录状态保持一致,建立SESSION会话
- Android WebView 与OkhttpClient登录状态保持一致,建立SESSION会话
- android WebView登录状态session id 和cookie同步
- android使用webview登录,获取session传递到httpclient小例子
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- android webview 页面关闭还保持登录态session问题
- Volley获取和发送sessionid保持用户登录状态
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- android使用webview登录,获取session传递到httpclient小例子
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android Cookie共享到WebView避免再次登录(保持登录状态)
- Android WebView请求,保存cookie,判断登录状态
- android 集合SSH服务端实现登录并保持session使客户端在登陆后能够获取服务端数据
- django web 登录状态保持 session
- android中HttpClient获取Session然后使用 WebView共享session的解决办法(转)
- android webview获取session值以及获取Js返回值
- Android 通过httpclient请求web服务器,并解决用户登录session保持
- Android 通过httpclient请求web服务器,并解决用户登录session保持