uniapp如何在安卓平台实现文件写入功能
在uniapp开发中,如何在安卓平台上实现文件写入功能?具体的API和权限配置是怎样的?能否提供一个完整的示例代码?
2 回复
在uni-app中,使用uni.saveFile或plus.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 接口,支持文件系统操作。
- 获取文件系统对象:使用
plus.io.requestFileSystem请求文件系统。 - 写入文件:通过
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.ioAPI 操作应用私有目录。 - 复杂需求:通过 Native.js 或插件(如 uni-plugin-file)扩展。
- 权限和路径兼容性是常见问题,需根据安卓版本调整。
根据需求选择合适方案,优先使用 HTML5 Plus API 以确保兼容性。

