风口的珠
风口的珠
  • 发布:2022-07-04 17:14
  • 更新:2024-05-30 17:33
  • 阅读:1706

【报Bug】安卓内嵌uni-app项目使用uni.chooseImage打不开相机

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版 20H2

HBuilderX类型: 正式

HBuilderX版本号: 3.4.15

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: P40

页面类型: vue

vue版本: vue2

打包方式: 离线

项目创建方式: HBuilderX

操作步骤:

1、uni-app项目中的manifest文件配置相机权限、sd卡访问权限;2、安卓sdk开启相机权限、sd卡访问权限;3、先真机连接HbuilderX调试,可拍照;4、使用wgt包方式打包uni-app项目,放入安卓项目中,作为内嵌小程序,进一步打包成APP;5、安卓APP中打开相机失败。

预期结果:

正常询问相机权限,点击允许拍照之后可以使用拍照功能。

实际结果:

只弹出了相机权限申请弹窗,点击允许拍照之后没有反应了,无法启用相机。

bug描述:

背景:安卓端内嵌uni-app项目,使用wgt打包方式嵌入安卓原生sdk中,已经在uni-app项目中的manifest.json中打开了相机权限,并且安卓端也做了所有相关权限配置。表现:在HbuilderX中连接手机调试可以打开拍照,但是安卓打包之后仍旧打不开相机拍照。配置如下:

uni-app配置:

{  
    "name" : "MobileEShop",  
    "appid" : "__UNI__2609B62",  
    "description" : "",  
    "versionName" : "1.0.0",  
    "versionCode" : "100",  
    "transformPx" : false,  
    "networkTimeout" : {  
        "request" : 300000 //多长时间算超时(单位毫秒) 设置5分钟  
    },  
    /* 5+App特有相关 */  
    "app-plus" : {  
        "usingComponents" : true,  
        "nvueStyleCompiler" : "uni-app",  
        "compilerVersion" : 3,  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : true,  
            "waiting" : true,  
            "autoclose" : true,  
            "delay" : 0  
        },  
        /* 模块配置 */  
        "modules" : {  
            "UIWebview" : {},  
            "Statistic" : {}  
        },  
        /* 应用发布信息 */  
        "distribute" : {  
            /* android打包配置 */  
            "android" : {  
                "permissions" : [  
                    "<uses-feature android:name=\"android.hardware.camera\"/>",  
                    "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>",  
                    "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>",  
                    "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>",  
                    "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>",  
                    "<uses-permission android:name=\"android.permission.CAMERA\"/>",  
                    "<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_EXTERNAL_STORAGE\"/>",  
                    "<uses-permission android:name=\"android.permission.READ_LOGS\"/>",  
                    "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>",  
                    "<uses-permission android:name=\"android.permission.RECEIVE_BOOT_COMPLETED\"/>",  
                    "<uses-permission android:name=\"android.permission.VIBRATE\"/>",  
                    "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>",  
                    "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>",  
                    "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>",  
                    "<uses-permission android:name=\"android.permission.RECEIVE_USER_PRESENT\"/>"  
                ]  
            },  
            /* ios打包配置 */  
            "ios" : {},  
            /* SDK配置 */  
            "sdkConfigs" : {  
                "ad" : {},  
                "statics" : {}  
            }  
        }  
    },  
    /* 快应用特有相关 */  
    "quickapp" : {},  
    /* 小程序特有相关 */  
    "mp-weixin" : {  
        "appid" : "",  
        "setting" : {  
            "urlCheck" : false  
        },  
        "usingComponents" : true  
    },  
    "mp-alipay" : {  
        "usingComponents" : true  
    },  
    "mp-baidu" : {  
        "usingComponents" : true  
    },  
    "mp-toutiao" : {  
        "usingComponents" : true  
    },  
    "uniStatistics" : {  
        "enable" : false  
    },  
    "vueVersion" : "2",  
    "h5" : {  
        "port" : 8086, //浏览器运行端口  

    }  
}  

安卓端配置:

<provider  
    android:name="androidx.core.content.FileProvider"  
    android:authorities="com.****.****.fileProvider"  
    android:grantUriPermissions="true"  
    android:exported="false">  
    <meta-data  
        android:name="android.support.FILE_PROVIDER_PATHS"  
        android:resource="@xml/file_paths" />  
</provider>
<uses-permission android:name="android.permission.CAMERA"/>  
<uses-feature android:name="android.hardware.camera" />  
<uses-feature android:name="android.hardware.camera.autofocus" />  
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2022-07-04 17:14 负责人:无 分享
已邀请:
1***@163.com

1***@163.com

您好,请问解决了吗?我也遇到了这个问题.

  • 2***@qq.com

    看下打包模块配置,有没有勾选相应的模块

    2022-12-28 18:00

sinovel

sinovel

现在是2024年了,我也遇到了类似问题,通过uni.chooseImage打开相机偶尔会一片黑,偶发的,无法复现,也没找到解决方案

要回复问题请先登录注册