uni-app 小米9调用uni.chooseImage拍照后APP闪退
uni-app 小米9调用uni.chooseImage拍照后APP闪退
| 信息类别 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC版本号 | Windows10 |
| 开发工具 | HBuilderX |
| 工具版本 | 3.99 |
| 手机系统 | Android |
| 手机版本 | Android 11 |
| 手机厂商 | 小米 |
| 手机型号 | MI 9 |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType:['camera'],
success: function(res) {
if (success) {
}
}
})
拍照完成APP闪退
操作步骤:
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType:['camera'],
success: function(res) {
if (success) {
}
}
)
拍照完成APP闪退
预期结果:
正常返回拍照图片
实际结果:
闪退
bug描述:
uni.chooseImage({
count: 1,
sizeType: ['original', 'compressed'],
sourceType:['camera'],
success: function(res) {
if (success) {
}
}
)
拍照完成APP闪退
更多关于uni-app 小米9调用uni.chooseImage拍照后APP闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
11 回复
请问解决了吗,我这边也有这个问题
更多关于uni-app 小米9调用uni.chooseImage拍照后APP闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html
当时没有解决方案,我试了就第一次闪退,第二次接着拍照就不会退了
这个好像是部分手机才会这样
现在安卓9的机型 比如vivo和oppo 都会触发,有没有解决办法
这个问题是不是和手机运行内存有关系?
不确定,我尝试了只有第一个会崩溃,崩溃后立马再打开APP就不会崩溃了
回复 乔小猿: 我这边也是这样,第一次拍照会重启,然后第二次就不会,但是每次打开app拍照必重启…
请问解决了吗
自定义相机可解决
在 uni-app 中,使用 uni.chooseImage 调用相机拍照后出现闪退问题,可能与以下原因有关:
1. 内存不足或图片过大
- 原因:小米9的相机拍照后生成的图片可能过大,导致内存占用过高,进而引发闪退。
- 解决方案:
- 在
uni.chooseImage中设置compressed参数为true,压缩图片:uni.chooseImage({ count: 1, // 默认9 sizeType: ['compressed'], // 压缩图片 sourceType: ['camera'], // 相机 success: function (res) { console.log(res.tempFilePaths); } }); - 如果图片仍然过大,可以进一步通过
uni.compressImage进行压缩:uni.compressImage({ src: res.tempFilePaths[0], quality: 80, // 压缩质量 success: (compressedRes) => { console.log(compressedRes.tempFilePath); } });
- 在
2. 权限问题
- 原因:未正确申请相机或存储权限,导致拍照后无法保存或处理图片。
- 解决方案:
- 在
manifest.json中确保已声明相机和存储权限:{ "app-plus": { "permissions": [ "camera", "writePhotosAlbum", "readPhotosAlbum" ] } } - 在代码中动态检查并申请权限:
uni.getSetting({ success(res) { if (!res.authSetting['scope.camera']) { uni.authorize({ scope: 'scope.camera', success() { console.log('相机权限已授权'); }, fail() { uni.showModal({ title: '提示', content: '需要相机权限才能使用拍照功能', showCancel: false }); } }); } } });
- 在
3. 系统兼容性问题
- 原因:小米9的MIUI系统可能存在兼容性问题,导致调用相机后闪退。
- 解决方案:
- 更新 uni-app 版本,确保使用最新的 SDK。
- 在小米9的开发者选项中,关闭「MIUI优化」选项(如果有)。
- 尝试在其他设备上测试,确认是否为小米9特有的问题。
4. 代码逻辑问题
- 原因:拍照后的回调函数中可能存在未处理的异常,导致闪退。
- 解决方案:
- 检查
uni.chooseImage的success回调函数,确保逻辑正确。 - 添加
try-catch捕获异常:uni.chooseImage({ count: 1, sourceType: ['camera'], success: function (res) { try { console.log(res.tempFilePaths); } catch (e) { console.error('处理图片时出错:', e); } }, fail: function (err) { console.error('调用相机失败:', err); } });
- 检查
5. 硬件问题
- 原因:小米9的相机硬件或系统可能存在故障。
- 解决方案:
- 尝试使用其他拍照应用(如系统相机)确认是否为硬件问题。
- 重启设备或恢复出厂设置。
6. 调试与日志分析
- 使用 Android Studio 或 HBuilderX 的调试工具,查看日志中是否有异常信息。
- 在
manifest.json中开启调试模式:{ "app-plus": { "debug": true } }


