这几天,公司需要将之前的Android APP同时兼容适应在平板上操作。因此将有几个页面改成直接访问服务器的H5页面,而服务器上的H5页面是直接获取的原接口的数据的。
起先我是这么写的:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frame_web);
webView = (WebView) findViewById(R.id.web_view);
WebSettings setting = webView.getSettings();
setting.setJavaScriptEnabled(true);
setting.setAllowFileAccess(true);
webView.loadUrl("http://xxxx.mhtml");
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
}
return false;
}
});
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frame_web);
webView = (WebView) findViewById(R.id.web_view);
WebSettings setting = webView.getSettings();
setting.setJavaScriptEnabled(true);
setting.setAllowFileAccess(true);
Map<String,String> extraHeaders= new HashMap<String, String>();
map.put("Host", appContext.getConnectHost());
map.put("Connection","Keep-Alive");
map.put("Cookie", getCookie(appContext));
map.put("User-Agent", getUserAgent(appContext));
webView.loadUrl("http://xxxx.mhtml",extraHeaders);
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
}
return false;
}
});
}
我以为可以拿到数据了,结果还是不行。还是没有cookie。搜索了相关的资料,最后加上了这么一段代码。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.frame_web);
webView = (WebView) findViewById(R.id.web_view);
WebSettings setting = webView.getSettings();
setting.setJavaScriptEnabled(true);
setting.setAllowFileAccess(true);
CookieSyncManager.createInstance(NoticeWebFrame.this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
cookieManager.setCookie(getCookie(appContext));
CookieSyncManager.getInstance().sync();
Map<String,String> extraHeaders= new HashMap<String, String>();
map.put("Host", appContext.getConnectHost());
map.put("Connection","Keep-Alive");
map.put("Cookie", getCookie(appContext));
map.put("User-Agent", getUserAgent(appContext));
webView.loadUrl("http://xxxx.mhtml",extraHeaders);
webView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK && webView.canGoBack()) {
webView.goBack();
return true;
}
}
return false;
}
});
}
OK 没问题了 妥妥的~