android webview用法小结2 java与javascript的交互
16lz
2021-01-26
先让浏览器支持javascript
[java] view plain copy print ?- webView.getSettings().setJavaScriptEnabled(true);//打开就可以用js的功能
Js代码,放在asset文件夹下,也可以在服务器端,这样改变内容,只需改服务器端,客户端不用修改
[html] view plain copy print ?
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <title>Insert title here</title>
- <script type="text/javascript">
- function btn_test() {
- /* 打印,logcat里的tag是Web Console */
- console.log("btn_test");
- }
- function call_java() {
- /* js调用java代码,需要接口 */
- Window.interface_test.showToastFromWeb("hello i am javascript!");
- }
- function test_alert() {
- /* 弹出对话框 */
- alert("hello i am javascript!");
- }
- function test_confirm() {
- /* 弹出带确定和取消按钮的对话框 */
- var v = confirm("hello i am javascript!");
- console.log("onfirm " + v);
- }
- function test_prompt() {
- /* 弹出带输入框的对话框 */
- var v = prompt("input you name!", "tom");
- console.log("prompt " + v);
- }
- </script>
- </head>
- <body>
- <button onclick="btn_test()">test</button>
- <button onclick="call_java()">call_java</button>
- <button onclick="test_alert()">test_alert</button>
- <button onclick="test_confirm()">test_confirm</button>
- <button onclick="test_prompt()">test_prompt</button>
- <label tel:800800284>tel:8008233</label>
- </body>
- </html>
Java代码里
对应call_java()方法
[java] view plain copy print ?- webView.addJavascriptInterface(new Object(){
- public void showToastFromWeb(String msg){
- showToast(msg);
- }
- }, "interface_test");
对应alert等方法
[java] view plain copy print ?- webView.setWebChromeClient(new WebChromeClient(){
- @Override
- public void onProgressChanged(WebView view, int newProgress) {
- //这里上一博文已提过
- }
- @Override
- public boolean onJsAlert(WebView view, String url, String message,
- JsResult result) {
- // TODO Auto-generated method stub
- return super.onJsAlert(view, url, message, result);
- }
- @Override
- public boolean onJsConfirm(WebView view, String url,
- String message, JsResult result) {
- // TODO Auto-generated method stub
- return super.onJsConfirm(view, url, message, result);
- }
- @Override
- public boolean onJsPrompt(WebView view, String url, String message,
- String defaultValue, JsPromptResult result) {
- // TODO Auto-generated method stub
- return super.onJsPrompt(view, url, message, defaultValue, result);
- }
- });
加载html
[java] view plain copy print ?
- // webView.loadUrl("javascript:btn_test()");
- webView.loadUrl("file:///android_asset/test.html");
效果图
更多相关文章
- Android(安卓)IPC之ContentProvider和Socket(Android开发艺术探索
- Android中的工厂模式(减少if-else和switch-case)
- [置顶] 100多个Android(安卓)Demo的整合
- android屏幕页面实现滚动,页面跳转
- Android(安卓)仿微信朋友圈发动态功能(相册图片多选)
- Gradle minifyEnabled 使用proguard混淆android代码 android stu
- 一行代码玩转android数据库之增删改查,超级简单 第三方框架xUtils
- Android之网络访问(一)android 中对apache httpclient及httpurlc
- Android中application 全局变量