最近在开发某个app时,客户要求把导出的excel文件保存在根目录上,程序报错“"targetSdkVersion设置>=29后在Android10+系统设备不支持当前路径。请更改为应用运行路径!”,解决方案如下:
<script module="download" lang="renderjs">
//native.js创建文件及删除文件
let dir = '/图注';
let pathUrl = '/图注/test.txt';
// #ifdef APP-PLUS
let environment = plus.android.importClass("android.os.Environment");
var sdRoot = environment.getExternalStorageDirectory(); //文件夹根目录
var File = plus.android.importClass("java.io.File");
var BufferedReader = plus.android.importClass("java.io.BufferedReader");
var FileReader = plus.android.importClass("java.io.FileReader");
var FileWriter = plus.android.importClass("java.io.FileWriter");
// #endif
export default {
data() {
return {}
},
mounted() {},
methods: {
whiteFile(val) {
let _this = this
let res = val.template // 保存内容
// #ifdef APP-PLUS
res = res + ',';
try {
//不加根目录创建文件(即用相对地址)的话directory.exists()这个判断一值都是false
console.log(sdRoot + dir)
let directory = new File(sdRoot + dir);
if (!directory.exists()) {
console.log('创建目录')
directory.mkdirs(); //创建目录
}
if (!directory.exists()) {
console.log('创建目录失败')
} else {
console.log('创建目录成功')
}
pathUrl = val.fileName // 文件路径,注意和文件夹保持一致,从根目录开始
console.log(sdRoot + pathUrl)
let file = new File(sdRoot + pathUrl);
console.log(file.exists())
if (!file.exists()) {
file.createNewFile(); //创建文件
}
let fos = new FileWriter(sdRoot + pathUrl, true);
fos.write(res);
fos.close();
return true;
} catch (e) {
console.log(e);
return false;
}
return false;
//#endif
}
}
}
</script>