如果我使用路径获取 html 内容,我将面临应用程序已停止的错误。但是如果我在代码行中一个一个地编写 HTML 内容,如“.......”,那么程序就会运行。哪里有问题?
安卓文件;
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文件;
<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>
最佳答案
我喜欢这个,这是我的“食谱”:
将您的 htm 文件放入设备(模拟或物理)的 Assets 文件夹中
然后像这样访问它:
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 变量中。
如您所见,它们存储在 Assets 路径中名为“help”的文件夹下
关于安卓网页 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21581346/