uni-app 打包的h5嵌入到安卓app里,uni.chooseImage无回调

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app 打包的h5嵌入到安卓app里,uni.chooseImage无回调

产品分类

uniapp/H5

开发环境信息

信息
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.6.4
浏览器平台 手机系统浏览器
浏览器版本 14
项目创建方式 HBuilderX

示例代码

uni.chooseImage({  
    count: 9, //默认9  
    sizeType: ['compressed'], //可以指定是原图还是压缩图,默认二者都有  
    sourceType: ['album', 'camera'], //从相册选择  
    success: function(res) {  
        uni.showToast({  
            title: `chooseImage-${res}`,  
            icon: 'none',  
            duration: 3000  
        })  
    },  
    fail: function(res) {  
        uni.showToast({  
            title: `chooseImage-fail-${res}`,  
            icon: 'none',  
            duration: 3000  
        })  
    }  
});

操作步骤

uniapp 打包的h5 嵌入到小程序里面,然后从安卓app里面打开这个小程序,上传图片

预期结果

可以上传图片

实际结果

不可以上传图片

bug描述

uniapp 打包的h5 嵁入到小程序里面,然后从安卓app里面打开这个小程序,上传图片,uni.chooseImage什么回调都没有,点击弹出照片跟相册页面,但是都无法上传,点击浏览,近期图片单个可上传,多个也不可上传

图片1 图片2


5 回复

这需要Android app对webview进行设置,需要原生工程那边修改。 还有一种方式是使用uni小程序sdk,这个sdk里的webview已经被我们设置好了


原生那边估计是不会改了,不是我们写的,请问第二种怎么弄呢

回复 1***@qq.com: 我这app也是用uni开发的,原生的我能处理,问题是这unapp开发的app咋整?

遇到同样的问题了, app也是用uni开发打包的,使用的webview, 还需要使用uni小程序么? 如果仍需要用的话怎么使用uni小程序sdk?

在将 uni-app 打包的 H5 页面嵌入到安卓 APP 中时,如果遇到 uni.chooseImage 无回调的问题,通常可能是由权限设置、调用方式或环境差异引起的。以下是一些可能帮助解决问题的代码示例和检查点:

1. 确认权限配置

首先,确保在安卓 APP 中已经正确配置了访问存储的权限。在 AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

对于 Android 6.0 及以上版本,还需在运行时请求权限。以下是一个请求存储权限的简单示例(假设使用 Android 原生代码):

if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE_STORAGE_PERMISSION);
}

2. uni-app 代码示例

确保在 uni-app 中调用 uni.chooseImage 的方式是正确的。以下是一个基本的调用示例:

uni.chooseImage({
    count: 9, // 默认9
    sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
    sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
    success: function (res) {
        console.log('选择图片成功:', res.tempFilePaths);
    },
    fail: function (err) {
        console.error('选择图片失败:', err);
    }
});

3. 调试与日志

fail 回调中添加详细的错误日志可以帮助定位问题:

fail: function (err) {
    console.error('选择图片失败,错误信息:', err.errMsg, '错误代码:', err.errCode);
}

4. 环境检查

  • 确保嵌入的 H5 页面在 WebView 中正确加载。
  • 检查 WebView 是否支持必要的 HTML5 和 JS API。
  • 如果是在某些特定的 WebView 组件中(如某些第三方库),可能需要额外的配置来支持文件选择功能。

5. 跨域问题

如果图片选择涉及跨域请求,确保服务器设置了正确的 CORS 策略。

通过上述步骤,通常可以定位并解决 uni.chooseImage 无回调的问题。如果问题依旧存在,建议进一步检查嵌入 H5 的 WebView 组件的具体实现和配置。

回到顶部