WebViewの問題と解決策
4908 ワード
h 5の普及に伴い、webveiwの使用度はますます高くなり、アンドロイドの最も複雑なコントロールとして、使用時に頭の痛いバグに遭遇し、以下にまとめた.
webview , ,
WebSettings webSetting = getSettings();//
1 javaScript, js,
webSetting.setJavaScriptEnabled(true);
2 支持DomStorage,当加载一些复杂的网页可能无法加载或者第一次无法加载成功,需要设置这行代码webSetting.setDomStorageEnabled(true);
3
webview
private WebViewClient client = new WebViewClient() { /** * */ public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }
webview , http,https , , , , , url ,
// 处理自定义scheme协议if (!url.startsWith( "http" )) {try {Intent intent = new Intent(Intent. ACTION_VIEW ,Uri. parse (url));mContext .startActivity(intent);} catch (Exception e) {e.printStackTrace();}return true ;}, , ,
4 webview
, , Refer ,
//Refer、つまり前回リダイレクトしたアドレスを追加
public static
Map geth 5 Header//このアドレスは前回アクセスしたurlに入れます
{
Map
extraHeaders
=
new
HashMap();
extraHeaders
.put(
"Referer"
,referer);
return
extraHeaders
;
}
その後、リクエスト時に呼び出されます.
view.loadUrl(url, Util.
getH5Header
(view.getUrl()));
問題を完璧に解決する