暖东
暖东
  • 发布:2020-11-08 14:29
  • 更新:2023-03-21 09:42
  • 阅读:3589

【报Bug】安卓打包测试uniapp,uni.chooseImage无法打开相册,拍摄正常。

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 2.8.13

手机系统: Android

手机系统版本号: Android 10

手机厂商: vivo

手机机型: vivo x27

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

点击上传图片按钮-打开手机相册-选择图片-确定-上传图片-上传成功

预期结果:

点击上传图片按钮-打开手机相册-选择图片-确定-上传图片-上传成功

实际结果:

①点击上传图片按钮-打开手机相册-无法选择图片
②点击上传图片按钮-打开手机相册-闪退又重进进入app首页

bug描述:

安卓机本地连接测试可用,云端打包后的apk,uni.chooseImage的相册不好用,拍摄没问题。
出现情况:①可以打开相册,但是无法显示本机图片;②点击从相册选择,即闪退重新进入app。

2020-11-08 14:29 负责人:无 分享
已邀请:
bge

bge - 业余写代码

我的上传图片,点开相册app就闪退,我的是中兴努比亚手机目前一直未解决

  • 暖东 (作者)

    可以看看是不是没写允许存储权限,我的是没有存储权限造成的

    2020-11-12 19:44

DCloud_heavensoft

DCloud_heavensoft

如果真机运行没问题,打包有问题,有2种可能:

  1. manifest的配置不对
  2. 打包的包名在手机上没有给予应有的权限
  • 暖东 (作者)

    多谢回复~,问题已经解决了~是没有给相应的权限

    2020-11-12 19:43

  • y***@163.com

    回复 暖东: 您好,有permission.js的代码么

    2021-04-06 11:01

暖东

暖东 (作者)

解决问题方法

① 引入```javascript
import permision from "@/common/permission.js";

② method中写方法
```javascript  
sourceTypeChange: function(e) {  
                this.sourceTypeIndex = parseInt(e.detail.value)  
            },  
async checkPermission(code) {  
                let type = code ? code - 1 : this.sourceTypeIndex;  
                let status = permision.isIOS ? await permision.requestIOS(sourceType[type][0]) :  
                    await permision.requestAndroid(type === 0 ? 'android.permission.CAMERA' :  
                        'android.permission.READ_EXTERNAL_STORAGE');  

                if (status === null || status === 1) {  
                    status = 1;  
                } else {  
                    uni.showModal({  
                        content: "没有开启权限",  
                        confirmText: "设置",  
                        success: function(res) {  
                            if (res.confirm) {  
                                permision.gotoAppSetting();  
                            }  
                        }  
                    })  
                }  

                return status;  
            },  
openpicpop: async function() {  

                // #ifdef APP-PLUS  
                // TODO 选择相机或相册时 需要弹出actionsheet,目前无法获得是相机还是相册,在失败回调中处理  
                let status = await this.checkPermission();  
                if (status !== 1) {  
                    return;  
                }  
                // #endif  

                uni.chooseImage({  
                    count: 1, //默认9  
                    sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有, 'compressed'  
                    sourceType: ['album', 'camera'], //从相册选择  
                    success: res => {  
                        let that = this;  
                        uni.showLoading({  
                            title: '上传中'  
                        });  
                        uni.uploadFile({  
                            url: 'xxxxxxxxxx', //访问后台 url  
                            filePath: res.tempFilePaths[0], //要上传的文件对象  
                            name: 'file', //文件对应的 key , 开发者在服务器端通过这个 key 可以获取到文件二进制内容  
                            formData: {  
                                'xxx1': xxx1,//往后台传的参数  
                            },  
                            success: res => {  
                                res = JSON.parse(res.data);  
                                if (res.code === 200) {  
                                    uni.hideLoading()  
                                    uni.showToast({  
                                        title: '上传成功',  
                                        icon: 'none'  
                                    });  
                                } else {  
                                    uni.hideLoading()  
                                    uni.showModal({  
                                        title: '上传失败',  
                                        content: res.msg  
                                    });  
                                }  
                            }  
                        });  
                    },  
                    fail: (err) => {  
                        // #ifdef APP-PLUS  
                        if (err['code'] && err.code !== 0 && this.sourceTypeIndex === 2) {  
                            this.checkPermission(err.code);  
                        }  
                        // #endif  
                    }  
                });  
            },
  • w***@xinboxinmo.com

    status不打印呢

    2020-12-25 15:56

  • y***@163.com

    您好,有permission.js的代码么

    2021-04-06 11:00

  • 篝火

    回复 y***@163.com: 参考一下这个吧,https://www.jianshu.com/p/171400b05312

    2021-10-25 17:31

destiny_JS

destiny_JS

安卓10以上需要新的camera权限

要回复问题请先登录注册