uniapp如何在安卓平台实现文件写入功能

在uniapp开发中,如何在安卓平台上实现文件写入功能?具体的API和权限配置是怎样的?能否提供一个完整的示例代码?

2 回复

在uni-app中,使用uni.saveFileplus.io接口实现安卓文件写入。示例代码:

plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs){
  fs.root.getFile('test.txt', {create:true}, function(fileEntry){
    fileEntry.createWriter(function(writer){
      writer.write('Hello World');
    });
  });
});

注意:需在manifest.json中配置写入权限。


在 UniApp 中,安卓平台实现文件写入功能可通过以下步骤完成,主要依赖 HTML5 Plus API 或第三方插件。以下是具体方法及示例代码:

方法一:使用 HTML5 Plus API(推荐)

UniApp 集成了 HTML5 Plus 的 plus.io 接口,支持文件系统操作。

  1. 获取文件系统对象:使用 plus.io.requestFileSystem 请求文件系统。
  2. 写入文件:通过 getFile 获取文件对象,再调用 createWriter 创建写入器。

示例代码

// 在 Vue 方法中写入文件
writeFile() {
  // 请求文件系统(使用本地存储)
  plus.io.requestFileSystem(plus.io.PRIVATE_WWW, (fs) => {
    // 获取或创建文件(路径为相对应用根目录,如 'test.txt')
    fs.root.getFile('test.txt', { create: true }, (fileEntry) => {
      fileEntry.createWriter((writer) => {
        // 写入内容
        writer.write('Hello, UniApp!');
        uni.showToast({ title: '写入成功', icon: 'success' });
      }, (error) => {
        console.error('写入失败: ' + error.message);
      });
    });
  });
}

方法二:使用 Native.js(高级功能)

如果需要更底层操作(如指定绝对路径),可结合 Native.js 调用安卓原生 Java 代码。

注意事项

  • 权限配置:在 manifest.json 中配置安卓写入权限:
    "permissions": [
      "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
    ]
    
  • 存储路径:安卓 10+ 设备对外部存储访问受限,建议使用应用私有目录(如 plus.io.PRIVATE_WWW)。
  • 测试时请使用真机,HBuilderX 需选择“真机运行”。

替代方案:使用 uni.downloadFile

如果是从网络下载文件,可直接用 uni.downloadFile

uni.downloadFile({
  url: 'https://example.com/file.txt',
  success: (res) => {
    if (res.statusCode === 200) {
      console.log('文件已保存: ' + res.tempFilePath);
    }
  }
});

总结

  • 简单写入:用 plus.io API 操作应用私有目录。
  • 复杂需求:通过 Native.js 或插件(如 uni-plugin-file)扩展。
  • 权限和路径兼容性是常见问题,需根据安卓版本调整。

根据需求选择合适方案,优先使用 HTML5 Plus API 以确保兼容性。

回到顶部