获取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;@OverrIDeprotected 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.PHPwebvIEw.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(){@OverrIDepublic voID onPageStarted(WebVIEw vIEw,String url,Bitmap favicon) {pd.show();}@OverrIDepublic voID onPageFinished(WebVIEw vIEw,String url) {pd.dismiss();}});}//暴露给Js的功能接口public class MyJavaScript{//显示吐司// 如果target 大于等于API 17,则需要加上如下注解@JavaScriptInterfacepublic voID showToast(String text) {Toast.makeText(MainActivity.this,text,1).show();}//显示loading@JavaScriptInterfacepublic voID showProgressDialog(String text) {pd.setMessage(text);pd.show();}}//后退键@OverrIDepublic boolean onKeyDown(int keyCode,KeyEvent event) {if(keyCode==KeyEvent.KEYCODE_BACK&&webvIEw.canGoBack()){webvIEw.goBack();return true;}return super.onKeyDown(keyCode,event);}//菜单键@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {menu.add(0,"刷新");menu.add(0,1,"后退");menu.add(0,2,"前进");return super.onCreateOptionsMenu(menu);}//菜单点击事件@OverrIDepublic 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中WebView与Js交互的实现方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)