uni.chooseImage({
count: 1,//最大数量
sourceType: ['album','camera'], //从相册选择或拍照'album','camera'
success(res) {
//console.log(res.tempFiles)
// 获取的格式是数组,多选会同时返回,单选只返回一项
_this.imgArr.push(res.tempFiles[0].path)
_this.uploadPic(type);
}
})
- 发布:2025-12-04 15:56
- 更新:2025-12-04 16:48
- 阅读:112
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win11
HBuilderX类型: 正式
HBuilderX版本号: 4.85
手机系统: Android
手机系统版本号: Android 15
手机厂商: 华为
手机机型: P50
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
点击相机按钮-选择从相册选择
点击相机按钮-选择从相册选择
预期结果:
打开手机相册选择照片
打开手机相册选择照片
实际结果:
没有任何反应
没有任何反应
bug描述:
uni.chooseImage从相册选择没有任何反应。
根据您描述的问题,uni.chooseImage在华为P50上无反应,结合知识库信息分析如下:
-
可能原因:华为设备(尤其是运行HarmonyOS的机型)对系统相册权限管理较严格。您的HBuilderX 4.85版本虽满足App端4.52+的要求,但华为P50实际可能运行HarmonyOS而非纯Android,需特别注意鸿蒙平台兼容性。
-
解决方案建议:
- 检查
manifest.json中是否添加了相册权限声明("android.permission.READ_EXTERNAL_STORAGE") - 尝试改用5+ API实现:camera模块文档,因其底层调用更可控
- 更新至HBuilderX 4.86 alpha版(最新版本可能修复兼容性问题)
- 若仍无效,可考虑使用插件市场的相册选择增强插件
- 检查
-
注意事项:鸿蒙平台与Android原生实现存在差异,知识库中明确标注HarmonyOS需HBuilderX 4.23+支持。建议优先通过5+ API定制化处理,避免系统相册UI兼容性问题。
蔡cai - 开发的插件:https://ask.dcloud.net.cn/article/41539
可以使用uni.createRequestPermissionListener()这个api监听下用啥权限,然后去manifest.json里面加相对应的权限;
存储权限有:WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE、READ_MEDIA_IMAGES
-
-
-
-
山港科技口岸 (作者)
回复 蔡cai: "permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\"/>",
"<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
"<uses-permission android:name=\"android.permission.START_ACTIVITIES\" /> ",
"<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" /> ",
"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />",
"<uses-permission android:name=\"android.permission.GET_TASKS\" /> ",
"<uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" />",
"<uses-permission android:name=\"android.permission.SET_ALARM\"/> ",
"<uses-permission android:name=\"android.permission.USE_EXACT_ALARM\"/>",
"<uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />",
"<uses-permission android:name=\"android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS\" /> ",
"<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_CONFIGURATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\"/>"
],2025-12-04 16:47
-
-
-
-
-
-
-
调用chooseImage之间是否调用其他API申请了权限?或者提供一个简单的demo我这边试一下。
-
山港科技口岸 (作者)
没有其他权限是申请,就是最简朴的
uni.chooseImage({
count: 1,//最大数量
sourceType: ['album','camera'], //从相册选择或拍照'album','camera'
success(res) {
//console.log(res.tempFiles)
// 获取的格式是数组,多选会同时返回,单选只返回一项
_this.imgArr.push(res.tempFiles[0].path)
_this.uploadPic(type);
},
fail(res){
console.log(res)
}
})
选择“从相册选择”既不弹窗权限也不打开相册2025-12-04 16:23
-
-
山港科技口岸 (作者) - 山东港口科技集团日照口岸信息技术有限公司
能想到的权限都加上了
"permissions" : [
"<uses-feature android:name=\"android.hardware.camera\"/>",
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_LOCATION_EXTRA_COMMANDS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_MOCK_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",
"<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.CAMERA\"/>",
"<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",
"<uses-permission android:name=\"android.permission.READ_MEDIA_IMAGES\"/>",
"<uses-permission android:name=\"android.permission.READ_MEDIA_VIDEO\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>",
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>",
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>",
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>",
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>",
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",
"<uses-permission android:name=\"android.permission.VIBRATE\"/>",
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",
"<uses-permission android:name=\"android.permission.INSTALL_PACKAGES\"/>",
"<uses-permission android:name=\"android.permission.REQUEST_INSTALL_PACKAGES\"/>",
"<uses-permission android:name=\"android.permission.START_ACTIVITIES\" /> ",
"<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE\" /> ",
"<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\" />",
"<uses-permission android:name=\"android.permission.GET_TASKS\" /> ",
"<uses-permission android:name=\"android.permission.SCHEDULE_EXACT_ALARM\" />",
"<uses-permission android:name=\"android.permission.SET_ALARM\"/> ",
"<uses-permission android:name=\"android.permission.USE_EXACT_ALARM\"/>",
"<uses-permission android:name=\"android.permission.POST_NOTIFICATIONS\" />",
"<uses-permission android:name=\"android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS\" /> ",
"<uses-permission android:name=\"android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK\"/>",
"<uses-permission android:name=\"android.permission.CHANGE_CONFIGURATION\"/>",
"<uses-permission android:name=\"android.permission.ACCESS_BACKGROUND_LOCATION\"/>"
],