Android中WebView与Js交互的实现方法
程序员文章站
2024-03-02 10:32:58
获取webview对象
调用webview对象的getsettings()方法,获取websettings对象
调用websettings对象的setjavascrip...
获取webview对象
调用webview对象的getsettings()方法,获取websettings对象
调用websettings对象的setjavascriptenabled()方法,设置js可用,参数:布尔值
在判断是否支持js的时候,不要用alert(),默认不起作用,可以先用document.write()测试
调用webview对象的addjavascriptinterface(obj, interfacename)方法,添加js接口,参数:object对象,string接口名称(这个对象在js中的别名)
定义一个内部类myjavascript
定义一个方法showtoast(),显示吐司,api版本大于17需要加注解@javascriptinterface
java代码:
package com.tsh.mywebview; import android.annotation.suppresslint; import android.app.activity; import android.app.progressdialog; import android.graphics.bitmap; import android.os.bundle; import android.view.keyevent; import android.view.menu; import android.view.menuitem; import android.view.window; import android.webkit.javascriptinterface; import android.webkit.websettings; import android.webkit.webview; import android.webkit.webviewclient; import android.widget.toast; public class mainactivity extends activity { private webview webview; private progressdialog pd; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); requestwindowfeature(window.feature_no_title); setcontentview(r.layout.activity_main); pd=new progressdialog(this); pd.setmessage("正在加载..."); //webview的简单设置 webview=(webview) findviewbyid(r.id.wv_internet); //http://100.65.187.106/test.php webview.loadurl("http://100.65.187.106/test.php"); websettings websettings=webview.getsettings(); websettings.setsupportzoom(true); websettings.setbuiltinzoomcontrols(true); //js交互 new myjavascript().showtoast("111"); websettings.setjavascriptenabled(true); webview.addjavascriptinterface(new myjavascript(), "android"); webview.loadurl("javascript:documentwrite('测试')"); webview.setwebviewclient(new webviewclient(){ @override public void onpagestarted(webview view, string url, bitmap favicon) { pd.show(); } @override public void onpagefinished(webview view, string url) { pd.dismiss(); } }); } //暴露给js的功能接口 public class myjavascript{ //显示吐司 // 如果target 大于等于api 17,则需要加上如下注解 @javascriptinterface public void showtoast(string text) { toast.maketext(mainactivity.this, text, 1).show(); } //显示loading @javascriptinterface public void showprogressdialog(string text) { pd.setmessage(text); pd.show(); } } //后退键 @override public boolean onkeydown(int keycode, keyevent event) { if(keycode==keyevent.keycode_back&&webview.cangoback()){ webview.goback(); return true; } return super.onkeydown(keycode, event); } //菜单键 @override public boolean oncreateoptionsmenu(menu menu) { menu.add(0, 0, 0, "刷新"); menu.add(0, 0, 1, "后退"); menu.add(0, 0, 2, "前进"); return super.oncreateoptionsmenu(menu); } //菜单点击事件 @override public boolean onoptionsitemselected(menuitem item) { switch (item.getorder()) { case 0: webview.reload(); break; case 1: if(webview.cangoback()){ webview.goback(); } break; case 2: if(webview.cangoforward()){ webview.goforward(); } break; } return super.onoptionsitemselected(item); } }
js代码:
<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>测试android程序</title> </head> <body> 测试android和js交互 <br/> <button onclick="showtoast()">显示吐司</button> <br/> <button onclick="showprogressdialog()">显示loading</button> <script type="text/javascript"> function showtoast(){ android.showtoast("显示吐司"); } function showprogressdialog(){ android.showprogressdialog("显示进度条"); } </script> </body> </html>
以上内容是小编给大家介绍的android中webview与js交互的实现方法,希望对大家以上帮助!
推荐阅读
-
Android中WebView与Js交互的实现方法
-
Android实现在子线程中更新Activity中UI的方法
-
Django中利用filter与simple_tag为前端自定义函数的实现方法
-
实例探究Android开发中Fragment状态的保存与恢复方法
-
Android WebView使用方法详解 附js交互调用方法
-
详解Android中通过Intent类实现组件间调用的方法
-
Android应用开发中WebView的常用方法笔记整理
-
Android中定时执行任务的3种实现方法(推荐)
-
Django中利用filter与simple_tag为前端自定义函数的实现方法
-
Android中Socket通信的实现方法概述