這幾天,公司需要將之前的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 沒問題了 妥妥的~