2014-02-05 75 views
1

如果我使用路徑來獲取html內容,我面對應用程序已停止錯誤。但是,如果我在代碼行中像「........」一樣逐個寫HTML內容,那麼程序就會運行。哪裏有問題?Android WebView

Andriod文件;

private WebView webView; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.webcontent); 
    webView = (WebView) findViewById(R.id.webView); 
    webView.getSettings().setJavaScriptEnabled(true); 
    String content = null; 
    try { 
     content = Files.toString(new File("C:\\Users\\-SurrealBlack-\\Desktop\\b.html"), Charsets.UTF_8); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    webView.loadData(content, "text/html", "UTF-8"); 

} 

HTML file;

<html> 

<style type="text/css"> 
    html, body { 
     margin: 0; 
     padding: 1em; 
     font: 0.9em Verdana, Arial, sans serif; 
    } 

    input, select, textarea { 
     font: 0.9em Verdana, Arial, sans-serif; 
    } 

    h2 { 
     margin-top: 0.75em; 
     font-size: 1.6em; 
    } 

    #leftcol { 
     position: absolute; 
     top: 0; 
     left: 1em; 
     padding: 0; 
     width: 455px; 
    } 

    #map { 
     width: 450px; 
     height: 225px; 
     border: 1px solid #ccc; 
    } 

    #input { 
     width: 450px; 
    } 

    #text { 
     font-size: 0.85em; 
     margin: 1em 0 1em 0; 
     width: 100%; 
     height: 10em; 
    } 

    #info { 
     position: relative; 
     padding: 2em 0; 
     margin-left: 470px; 
    } 

    #features { 
     font-size: 0.8em; 
     width: 100%; 
     height: 200px; 
    } 

    #intersections { 
     font-size: 0.8em; 
     width: 100%; 
     height: 200px; 
    } 

    p { 
     margin: 0; 
     padding: 0.75em 0 0.75em 0; 
    } 
</style> 
<script src="http://openlayers.org/api/OpenLayers.js"></script> 
<script src="http://maps.google.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 
    var map, vectors, geojson, drawControls, selectControl, selectedFeature, polygonLayer; 
    function init() { 
     map = new OpenLayers.Map('map'); 
     var baseLayer = new OpenLayers.Layer.Google('Google Layer', 
     {}); 
     polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer"); 
     map.addLayers([baseLayer,polygonLayer]);  
     map.addControl(new OpenLayers.Control.MousePosition()); 
     map.addControl(new OpenLayers.Control.LayerSwitcher()); 
     selectControl = new OpenLayers.Control.SelectFeature(polygonLayer, 
      { onSelect: onFeatureSelect, onUnselect: onFeatureUnselect }); 
     drawControls = { 
      polygon: new OpenLayers.Control.DrawFeature(polygonLayer, 
         OpenLayers.Handler.Polygon), 
      point: new OpenLayers.Control.DrawFeature(polygonLayer, 
         OpenLayers.Handler.Point), 
      select: selectControl 
     }; 
     for (var key in drawControls) { 
      map.addControl(drawControls[key]); 
     } 

     geojson = new OpenLayers.Format.GeoJSON(); 
     map.setCenter(new OpenLayers.LonLat(0, 0), 1); 
    } 

    function toggleControl(element) { 
     for (key in drawControls) { 
      var control = drawControls[key]; 
      if (element.value == key && element.checked) { 
       control.activate(); 
      } else { 
       control.deactivate(); 
      } 
     } 
    } 
    function onPopupClose(evt) { 
     selectControl.unselect(selectedFeature); 
    } 
    function onFeatureSelect(feature) { 
     selectedFeature = feature; 
     popup = new OpenLayers.Popup.FramedCloud("chicken", 
           feature.geometry.getBounds().getCenterLonLat(), 
           null, 
           "<div style='font-size:.8em'>Feature: " + feature.id + "<br>Area: " + feature.geometry.getArea() + "</div>", 
           null, true, onPopupClose); 
     feature.popup = popup; 
     map.addPopup(popup); 
    } 
    function onFeatureUnselect(feature) { 
     map.removePopup(feature.popup); 
     feature.popup.destroy(); 
     feature.popup = null; 
    } 


</script> 
</head> 
<body onload="init()"> 
    <div id="map" class="smallmap"></div> 
</body> 
</html> 
+0

是您的文件所在文件夾下?它在PC上嗎?!嗯...然後問自己爲什麼不能訪問它! –

+0

是否需要允許訪問文件? – user3086033

+0

我不認爲你可以訪問像C:\ xyz \ zxy.htm這樣的路徑。 –

回答

1

我喜歡這個,這是我的 「食譜」:

把你的htm文件在設備的資產文件夾(模擬或物理)
然後訪問它像:

pgHelp = "file:///android_asset/help/help-" + lang + ".htm"; 

web = (WebView) v.findViewById(R.id.htmlDisplay); 
web.loadUrl(pgHelp); 

我的文件被命名爲help-xy.htm,其中xy是一個語言環境(en,de,fr,it,es),
存儲在lang變量中。

正如你所看到的,它們儲存在名爲「幫助」中的資產路徑當手機或平板電腦上