详细问题描述
(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)
[内容]
重现步骤
[步骤]
var Base64 = plus.android.importClass("android.util.Base64");
var bytes = Base64.decode(base64Str, Base64.DEFAULT);
以上是关键代码
下面为全部代码
commonApi.downLoad({
id: data.id
}, function(res, status, jqXHR) {
// console.log(JSON.stringify(data))
// var audioName = jqXHR.getResponseHeader("filename");
var audioName = data.fileName;
var reader = new FileReader();
reader.readAsDataURL(res);
reader.onloadend = function() {
var base64 = reader.result;
var base64Str = base64.substring(base64.indexOf(',') + 1);
plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
fs.root.getFile(audioName, {
create: true
}, function(entry) {
// 获得平台绝对路径
var fullPath = entry.fullPath;
// console.log(fullPath);
if (mui.os.android) {
var Base64 = plus.android.importClass("android.util.Base64");
var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");
try {
var out = new FileOutputStream(fullPath);
var bytes = Base64.decode(base64Str, Base64.DEFAULT);
out.write(bytes);
out.close();
// 回调
self.openWPS(fullPath);
} catch (e) {
console.log(e);
}
} else if (mui.os.ios) {
var NSData = plus.ios.importClass('NSData');
var nsData = new NSData();
nsData = nsData.initWithBase64EncodedStringoptions(base64Str, 0);
if (nsData) {
nsData.plusCallMethod({
writeToFile: fullPath,
atomically: true
});
plus.ios.deleteObject(nsData);
}
// 回调
self.openWPS(fullPath);
}
})
})
}
});
就是根据下载得到的文件流转换成编码流,然后生成本地IO文件,再然后截取掉了头部进行一个写入,问题就是在写入的时候bytes为null的时候什么也写入不了,抛出异常为 java.lang.NullPointerException: Attempt to get length of null array;at java.io.FileOutputStream.write
[结果]
大部分机型bytes 是NULL
[期望]
bytes 是非NULL值
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]
IDE运行环境说明
[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]
使用的是hbuilderX 版本
[IDE版本号]
[windows版本号]
win10系统64位
[mac版本号]
uni-app运行环境说明
[运行端是h5或app或某个小程序?]
运行端是APP 使用的是hbuilderX的基座
[运行端版本号]
最新版本
[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]
[编译模式是老模板模式还是新的自定义组件模式?]
App运行环境说明
[Android版本号]
不返回null的版本Android版本号是6.0
返回null的版本Android版本号是8.1.0 华为
[iOS版本号]
[手机型号]
oppo A57 HUAWE 华为荣耀8C 魅族5 魅族6 红米 小米mix2
[模拟器型号]
附件
[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]
[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]
[App安装包或H5地址]
[可重现代码片段]
联系方式 411982247@qq.com
[QQ] 411982247
4 个回复
第九代开发传人 - http://www.cnblogs.com/yanbigfeg/
碰到这种问题官方就不搭理了啊!我也遇到了不知道咋办了?也不知道能不能解决。不能解决也不给确定答案真是的
3***@qq.com
这个问题官方没回应吗?android新机型都有这个问题
小权
同问
小权
https://ask.dcloud.net.cn/question/93515