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()));
問題を完璧に解決する