解决android中webview对话框不能弹出

在配置了webview的 setting 属性后,以前设置的都是可以直接弹出来 的,今天写一个小demo时候莫名其妙的发现alert怎么也出来, 即使设置了这么多也不行:
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setAllowFileAccess(true);// 设置允许访问文件数据
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setJavaScriptCanOpenWind owsAutomatically(true);
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webSettings.setDomStorageEnabled(true);
webSettings.setDatabaseEnabled(true);

解决办法:
webview只是一个承载体,各种内容的渲染需要使用webviewChromClient去实现,所以set一个默认的基类WebChromeClient就行,代码如下:

mWebView.setWebChromeClient(new WebChromeClient());
Vue.js是一个流行的前端框架,它使得构建用户界面变得更加简单。Vant是一个轻量级的移动UI组件库,其包括Vant Uploader组件,这个组件允许你在Android应用通过Webview展示文件上传功能。 当使用Vant Uploader在Android Webview让用户选择照片时,通常会借助设备原生的文件选择器,这涉及到浏览器与设备操作系统的交互。Android系统提供了选择照片的API,比如`Intent` API,可以创建一个意图(Intent),指定`ACTION_GET_CONTENT`或者`ACTION_PICK_IMAGE`, 来弹出一个可以选择相册或打开相机的对话框。你需要在Android端处理这部分逻辑,JavaScript端则通过WebView调用相应的JavaScript Bridge(如cordova、vux等提供的bridge)来触发这个选择图片的动作,并接收用户的选取结果。 以下是大概的步骤: 1. Android端: - 创建一个Intent,指定ACTION_PICK_IMAGE或ACTION_GET_CONTENT。 - 调用startActivityForResult启动该Intent,传递给Webview对应的JavaScript函数。 2. Vue.js (Webview端): - 定义一个事件处理器,等待从Android发起的JS-RPC调用,例如 `window.webkit.messageHandlers.chooseImage.postMessage()`。 - 当接收到消息时,显示选择图片的提示,并处理用户的选择结果,可能是一个路径或者文件对象。 ```javascript // 假设你已经设置了一个名为"chooseImage"的消息处理器 document.getElementById('webview').addEventListener('message', function(e) { const type = e.data.type; if (type === 'openImagePicker') { // 显示选择图片的对话框 let result = /* 等待用户选择的结果 */; // 将结果发送回Android端 window.webkit.messageHandlers.chooseImage.postMessage(result); } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值