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

如何在Flutter应用中集成并显示DOCX文件

在安卓应用内显示DOCX文件的几种可行方案

针对你提供的路径storage/emulated/0/file1.docx(安卓外部存储路径),以下是几种实用的实现方式:

一、先搞定权限

安卓访问外部存储需要申请权限:

  1. 在AndroidManifest.xml里添加静态权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. Android 6.0及以上版本需要动态申请:
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
            new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
            1001); // 自定义请求码
}

二、嵌入显示方案(在自己应用内展示)

1. 提取纯文本用TextView显示(简单快速)

用Apache POI库解析DOCX的文本内容,适合只需要提取文字的场景:

  • 先在build.gradle中添加依赖:
implementation 'org.apache.poi:poi:4.1.2'
implementation 'org.apache.poi:poi-ooxml:4.1.2'
  • 解析并显示代码:
File docxFile = new File("storage/emulated/0/file1.docx");
try (XWPFDocument doc = new XWPFDocument(new FileInputStream(docxFile));
     XWPFWordExtractor extractor = new XWPFWordExtractor(doc)) {
    String content = extractor.getText();
    TextView tv = findViewById(R.id.doc_content);
    tv.setText(content);
} catch (IOException e) {
    e.printStackTrace();
}

⚠️ 注意:Apache POI体积较大,会增加APK包大小,对包体积敏感的话可以换用轻量级解析库。

2. 保留格式用WebView显示

如果要保留DOCX里的排版、图片等格式,可以将DOCX转换为HTML后用WebView加载。可以使用专门的转换库(如docx2html),示例代码如下:

File docxFile = new File("storage/emulated/0/file1.docx");
try {
    String htmlContent = Docx2Html.convert(docxFile); // 具体API以对应库的文档为准
    WebView webView = findViewById(R.id.doc_webview);
    webView.loadDataWithBaseURL(null, htmlContent, "text/html", "UTF-8", null);
} catch (Exception e) {
    e.printStackTrace();
}

三、调用系统应用打开(简单省心)

如果不需要在自己应用内嵌入显示,只是让用户查看文件,可以直接调用系统自带的办公应用打开:

  • 先配置FileProvider(Android 7.0+要求):
    1. 在AndroidManifest.xml中添加Provider配置:
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. 在res/xml目录下创建file_paths.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<paths>
    <external-path name="external" path="." />
</paths>
  • 调用Intent的代码:
File docxFile = new File("storage/emulated/0/file1.docx");
Uri fileUri = FileProvider.getUriForFile(this, getPackageName() + ".fileprovider", docxFile);

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(fileUri, "application/vnd.openxmlformats-officedocument.wordprocessingml.document");
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// 检查是否有应用能处理该Intent
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
} else {
    // 提示用户未安装支持DOCX的办公应用
}

内容的提问来源于stack exchange,提问作者Faizan Abbas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 22:20:19