安卓网页 View

标签 android android-webview

如果我使用路径获取 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/

相关文章:

java - 如何在多个fragment之间共享MediaPlayer对象?

具有多个 jpeg 文件的 Android 动画?

Android 在应用程序中嵌入 Firefox 浏览器

android - 我正在尝试创建一个 webview Activity ,但未加载整个网站

java - Android WebView : display only some part of website

android - 如何从 android 上传照片到 Twitter

android - 具有未决 Intent 的通知操作不适用于 JellyBean+

android - 在 EditText 中输入 "ae"自动变成 æ

android - 在 textview 中单击链接后,如何在 webview 而不是默认浏览器中打开该链接?

android - webview打开默认浏览器,不知道代码放哪里