uni-app Android11 uni.chooseImage 选择相机拍摄无图片返回

uni-app Android11 uni.chooseImage 选择相机拍摄无图片返回

开发环境 版本号 项目创建方式
Mac 10.15.7 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:10.15.7

HBuilderX类型:正式

HBuilderX版本号:2.6.16

手机系统:Android

手机系统版本号:Android 11

手机厂商:小米

手机机型:Android 11 系统

页面类型:vue

打包方式:离线

项目创建方式:HBuilderX

### 示例代码:

```javascript
uni.chooseImage({
sizeType: "original",
count: 4 - this.imageList.length,
success: (res) => {
console.log("APP选择图片1",res);
console.log("APP选择图片2",JSON.stringify(res));
that.loading = true;  
for (let i = 0; i < res.tempFilePaths.length; i++) {  
    uni.saveFile({  
        tempFilePath: res.tempFilePaths[i],  
        success: function (res) {  
            var path = res.savedFilePath;  
            console.log("保存的文件路径",path)  
            console.log("APP选择图片路径3",path)  
            common.compressImageAPP(path,i).then((image)=>{  
                console.log("压缩返回的结果",image)  
                console.log("压缩返回的结果22222",image)  
                that.loading = false;  
                that.imageList.push(image);  
                console.log("压缩返回的结果imageList",JSON.stringify(imageList))  
                that.uploadImage(image);  
            });  
          }  
    });  
}  
},  
fail: (err) => {  
}
})

操作步骤:

Android 11 选择相机拍摄,拍照后点击确定,uni.chooseImage 照片无返回结果

预期结果:

返回图片路径

实际结果:

无返回

bug描述:

Android11 uni.chooseImage 选择相机拍摄 无图片返回,选择相册里面图返回正常。 只有在Android 11 才存在这个问题,其他版本均正常。

使用安卓模拟器报错: 2021-03-22 11:24:28.535 10735-10735/? E/AndroidRuntime: FATAL EXCEPTION: main Process: com.android.camera2, PID: 10735 java.lang.NullPointerException at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:890) at com.google.common.base.Optional.of(Optional.java:103) at com.android.camera.captureintent.state.StateSavingPicture.onEnter(StateSavingPicture.java:77) at com.android.camera.captureintent.stateful.StateMachineImpl.jumpToState(StateMachineImpl.java:62) at com.android.camera.captureintent.stateful.StateMachineImpl.processEvent(StateMachineImpl.java:110) at com.android.camera.captureintent.state.StateOpeningCamera$9.onClick(StateOpeningCamera.java:307) at android.view.View.performClick(View.java:7448) at android.view.View.performClickInternal(View.java:7425) at android.view.View.access$3600(View.java:810) at android.view.View$PerformClick.run(View.java:28305) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:223) at android.app.ActivityThread.main(ActivityThread.java:7656) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)


更多关于uni-app Android11 uni.chooseImage 选择相机拍摄无图片返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

升级SDK吧。2.6.16的SDK没有适配android11

更多关于uni-app Android11 uni.chooseImage 选择相机拍摄无图片返回的实战教程也可以访问 https://www.itying.com/category-93-b0.html


我的3.1.22版本同样的问题

回复 y***@wanjiangbc.com: 云打包吗

我的HbuilderX 3.2.3版本也存在这个问题,是h5打包,也是Android11调用uni.chooseImage后选择相册,图片不显示

你说H5打包运行环境是什么?运行在我们提供的原生app环境中吗?

这是一个Android 11系统兼容性问题。由于Android 11引入了分区存储机制,相机应用返回的图片路径可能无法被正常访问。

建议的解决方案:

  1. 检查权限配置:确保在manifest.json中已申请相机和存储权限:
{
    "android": {
        "permissions": [
            "android.permission.CAMERA",
            "android.permission.READ_EXTERNAL_STORAGE",
            "android.permission.WRITE_EXTERNAL_STORAGE"
        ]
    }
}
  1. 使用最新HBuilderX版本:升级到最新版HBuilderX,官方已针对Android 11进行适配优化。

  2. 添加文件访问权限:在AndroidManifest.xml中添加:

<application
    android:requestLegacyExternalStorage="true"
    ...>
回到顶部