因项目需要,需要在App中嵌入网页,使用Nativie方式登录,然后将cookie保存到WebView中,实现免登录功能。同步Cookie到WebView的方法网上有大量的参考资料,也可以参考下面的代码:

/***SyncCookie*/privatevoidsyncCookie(Contextcontext,Stringurl){try{Log.d("Nat:webView.syncCookie.url",url);CookieSyncManager.createInstance(context);CookieManagercookieManager=CookieManager.getInstance();cookieManager.setAcceptCookie(true);cookieManager.removeSessionCookie();//移除cookieManager.removeAllCookie();StringoldCookie=cookieManager.getCookie(url);if(oldCookie!=null){Log.d("Nat:webView.syncCookieOutter.oldCookie",oldCookie);}StringBuildersbCookie=newStringBuilder();sbCookie.append(String.format("JSESSIONID=%s","INPUTYOURJSESSIONIDSTRING"));sbCookie.append(String.format(";domain=%s","INPUTYOURDOMAINSTRING"));sbCookie.append(String.format(";path=%s","INPUTYOURPATHSTRING"));StringcookieValue=sbCookie.toString();cookieManager.setCookie(url,cookieValue);CookieSyncManager.getInstance().sync();StringnewCookie=cookieManager.getCookie(url);if(newCookie!=null){Log.d("Nat:webView.syncCookie.newCookie",newCookie);}}catch(Exceptione){Log.e("Nat:webView.syncCookiefailed",e.toString());}}


使用上面的方法可以将Cookie同步到WebView中,这样浏览网页时即可实现免登录。

但是在实际使用过程中发现Cookie并未保存成功,每次都会跳转到登录页面,纠结了很久,终于发现是在初始化WebView时漏掉了重要的东西。可以参考下面我的代码设置WebView。

/***initWebViewSettings**/privatevoidinitWebViewSettings(){//myWebView.getSettings().setSupportZoom(true);//myWebView.getSettings().setBuiltInZoomControls(true);//myWebView.getSettings().setDefaultFontSize(12);//myWebView.getSettings().setLoadWithOverviewMode(true);//设置可以访问文件myWebView.getSettings().setAllowFileAccess(true);//如果访问的页面中有Javascript,则webview必须设置支持JavascriptmyWebView.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);}


完成以上两步操作,再次运行程序,你会发现,打开网页后不会再跳转到登录页面了。

第一使用WebView控件,原以为很简单,可是一不小心就掉坑里去了,大家小心。





更多相关文章

  1. android 进度对话框(ProgressDialog)的使用
  2. android拍照获得图片及获得图片后剪切设置到ImageView
  3. Cordova 3.x 基础(5) -- 配置文件config.xml
  4. Android(安卓)Studio 1.2 编码问题
  5. 不同android 版本的webview底层实现有差异
  6. Android中AlarmManager+Notification实现定时通知提醒功能
  7. Android(安卓)开机广播BOOT_COMPLETED延迟接收问题解决
  8. Android(安卓)ListView 有时候设置setDividerHeight无效的原因
  9. android AlarmManager闹钟设置多次只响应一次和响应多次以及传参

随机推荐

  1. 关于android 布局中诡异的AttributeSet
  2. android ksoap用法
  3. Android(安卓)java.lang.NoSuchMethodErr
  4. Android调用百度地图API实现――实时定位
  5. android 群发短信
  6. Unable to start activity ComponentInfo
  7. android,总结,判断应用程序是否切换到后
  8. Monkey测试结果解析(二)
  9. How to set up a link betwteen a real A
  10. Android(安卓)之 setContentView 源码阅