You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何提取WebView加载的本地HTML内容为字符串?

没问题,这事儿其实挺简单的,我给你一步步说怎么实现:

实现步骤

核心思路就是通过Android的AssetManager读取asset目录下的HTML文件内容,转换成字符串后再设置到TextView里,甚至还可以选择是否解析HTML格式标签。

1. 编写读取Asset文件的工具函数

你可以在Activity里直接写这个方法,或者单独封装到工具类里:

private String readAssetHtml(String filePath) {
    StringBuilder contentBuilder = new StringBuilder();
    InputStream inputStream = null;
    BufferedReader reader = null;

    try {
        // 获取AssetManager实例,用来访问asset目录下的文件
        AssetManager assetManager = getAssets();
        // 打开目标HTML文件,参数是asset里的相对路径(比如你这里的www/index.html)
        inputStream = assetManager.open(filePath);
        // 用UTF-8编码读取,避免中文或特殊字符乱码
        reader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));

        String line;
        while ((line = reader.readLine()) != null) {
            contentBuilder.append(line);
            contentBuilder.append("\n"); // 保留换行,让文本显示更接近原HTML的排版
        }
    } catch (IOException e) {
        e.printStackTrace();
        // 读取失败时返回提示文本
        return "无法加载HTML内容";
    } finally {
        // 一定要关闭流,避免资源泄漏
        try {
            if (reader != null) reader.close();
            if (inputStream != null) inputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return contentBuilder.toString();
}

2. 在Activity中调用并设置到TextView

假设你的TextView控件id是tv_html_content,在onCreate或者合适的生命周期方法里执行:

TextView textView = findViewById(R.id.tv_html_content);
// 读取asset/www/index.html的内容
String htmlString = readAssetHtml("www/index.html");

// 两种显示方式二选一:
// 方式1:只显示纯文本(忽略HTML标签)
textView.setText(htmlString);

// 方式2:解析HTML标签(比如<b>加粗、<i>斜体、<br>换行等)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    textView.setText(Html.fromHtml(htmlString, Html.FROM_HTML_MODE_COMPACT));
} else {
    // 兼容Android 7.0以下的旧版本
    textView.setText(Html.fromHtml(htmlString));
}

几个要注意的点

  • 编码问题:必须指定UTF-8编码,否则中文、特殊符号大概率会乱码。
  • 资源释放:流的关闭一定要放在finally块里,不管读取成功还是失败都能保证资源被释放。
  • HTML解析兼容性:Android N(API 24)之后Html.fromHtml的参数有变化,记得做版本判断兼容。

内容的提问来源于stack exchange,提问作者Gayu R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:50:20