uni-app 打包的h5嵌入到安卓app里,uni.chooseImage无回调
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什么回调都没有,点击弹出照片跟相册页面,但是都无法上传,点击浏览,近期图片单个可上传,多个也不可上传
这需要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 组件的具体实现和配置。