uni-app uni.chooseImage 获取相册app闪退

uni-app uni.chooseImage 获取相册app闪退

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

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

HBuilderX类型:Alpha

HBuilderX版本号:4.81

手机系统:Android

手机系统版本号:Android 10

手机厂商:vivo

手机机型:vivo S7e

页面类型:vue

vue版本:vue3

打包方式:离线

项目创建方式:HBuilderX


示例代码:

<template>
<view class="content">
<image class="logo" src="/static/logo.png"></image>
<view class="text-area">
<text class="title">测试获取相册</text>
</view>
<button [@click](/user/click)="getImage">获取相册</button>
</view>
</template> 
<script>
export default {
data() {
return {
title: 'Hello'
}
},
onLoad() {  
},
methods: {  
    getImage(){  
        uni.chooseImage({  
            count: 1, //默认9  
            sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有  
            sourceType: ['album'], //从相册选择  
            success: function (res) {  
                console.log(JSON.stringify(res.tempFilePaths));  
            }  
        })  
    }  
}  
</script> 
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.logo {  
height: 200rpx;  
width: 200rpx;  
margin-top: 200rpx;  
margin-left: auto;  
margin-right: auto;  
margin-bottom: 50rpx;  
}  

.text-area {  
display: flex;  
justify-content: center;  
}  

.title {  
font-size: 36rpx;  
color: #8f8f94;  
}  
</style> 

更多关于uni-app uni.chooseImage 获取相册app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

我是模拟器上模拟没有任何反应,他们都说正常这也就怪了。哎

更多关于uni-app uni.chooseImage 获取相册app闪退的实战教程也可以访问 https://www.itying.com/category-93-b0.html


也不是所有都有问题,目前发现vivo手机上有此现象

附件为操作视频

离线打包有问题,调试是否正常、云打包是否正常,总结下规律,vivo 手机之外还有复现吗

回复 DCloud_UNI_OttoJi: 自定义基座,标准基座,云端打包都有问题。华为p40没有此现象

回复 DCloud_UNI_OttoJi: vivo手机android 必现,不用总结规律

回复 1***@qq.com: 已复现,这两天会发一个4.82-alpha,修复了这个问题。

这是一个典型的权限配置问题。在Android 10及以上版本中,访问相册需要动态申请存储权限,否则会导致应用闪退。

在你的manifest.json文件中需要配置以下权限:

{
    "app-plus": {
        "distribute": {
            "android": {
                "permissions": [
                    "<uses-permission android:name=\"android.permission.READ_EXTERNAL_STORAGE\"/>",
                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>"
                ]
            }
        }
    }
}

同时,在调用chooseImage前需要先申请权限:

getImage() {
    // 先申请存储权限
    uni.authorize({
        scope: 'scope.writePhotosAlbum',
        success: () => {
            uni.chooseImage({
                count: 1,
                sizeType: ['original', 'compressed'],
                sourceType: ['album'],
                success: function (res) {
                    console.log(JSON.stringify(res.tempFilePaths));
                }
            })
        },
        fail: () => {
            uni.showToast({
                title: '需要相册权限',
                icon: 'none'
            })
        }
    })
}
回到顶部