AppInventor使用WebViewer加载网站时文件上传按钮无响应如何解决
问题根本原因
AppInventor自带的原生WebViewer组件仅实现了基础的网页渲染能力,没有注册安卓系统WebView所需的onShowFileChooser文件选择回调,同时默认也不会主动申请文件读写、相机调用的运行时权限,因此页面上的文件上传按钮点击后无法唤起系统的文件选择/相机调用流程,自然没有响应。
具体解决方法
- 方案1(最简易):替换原生WebViewer为社区增强版扩展
目前AppInventor社区有多个第三方开发者开发的增强WebViewer扩展,已经内置了文件上传回调、权限自动申请逻辑,直接替换你项目中原生的WebViewer组件即可。使用前仅需在屏幕属性面板中,提前勾选「请求写入外部存储」「请求相机权限」两个选项即可。 - 方案2(自行适配原生组件):
- 先在
Screen1.Initialize事件中,调用权限申请组件,提前向用户申请存储读写、相机调用权限,确认权限全部授权通过后再加载目标站点。 - 在WebViewer的
BeforePageLoad事件中,注入JS代码拦截页面上传按钮的点击事件,将点击事件转发到AppInventor原生的文件选择/相机调用组件,拿到选中的文件路径/拍摄的文件后,再通过JS将文件内容回填到网页的上传表单中完成上传。
- 先在
注意:如果打包后仍然无响应,可检查你使用的AppInventor分发版本是否在打包配置中默认禁用了WebView的文件访问权限,部分定制版离线打包工具会默认关闭该能力。
内容的提问来源于stack exchange,提问作者Fabio Rosito
相关产品推荐
相关产品推荐

