获取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; androID.app.Activity; androID.app.ProgressDialog; androID.graphics.Bitmap; androID.os.Bundle; androID.vIEw.KeyEvent; androID.vIEw.Menu; androID.vIEw.MenuItem; androID.vIEw.Window; androID.webkit.JavaScriptInterface; androID.webkit.WebSettings; androID.webkit.WebVIEw; androID.webkit.WebVIEwClIEnt; androID.Widget.Toast;public class MainActivity extends Activity { private WebVIEw webvIEw; 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(); Js交互 new MyJavaScript().showToast("111"); websettings.setJavaScriptEnabled(); webvIEw.addJavaScriptInterface(new MyJavaScript(),"AndroID"); webvIEw.loadUrl("JavaScript:documentWrite('测试')"); webvIEw.setWebVIEwClIEnt(new WebVIEwClIEnt(){ @OverrIDe onPageStarted(WebVIEw vIEw,String url,Bitmap favicon) { pd.show(); } @OverrIDe onPageFinished(WebVIEw vIEw,String url) { pd.dismiss(); } }); } 暴露给Js的功能接口 class MyJavaScript{ 显示吐司 如果target 大于等于API 17,则需要加上如下注解 @JavaScriptInterface showToast(String text) { Toast.makeText(MainActivity.this,text,1).show(); } 显示loading showProgressDialog(String text) { pd.setMessage(text); pd.show(); } } 后退键 @OverrIDe boolean onKeyDown(int keyCode,KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK&&webvIEw.canGoBack()){ webvIEw.goBack(); return ; } .onKeyDown(keyCode,event); } 菜单键boolean onCreateOptionsMenu(Menu menu) { menu.add(0,"刷新"); menu.add(0,1,"后退"); .onCreateOptionsMenu(menu); } 菜单点击事件 onoptionsItemSelected(MenuItem item) { switch (item.getorder()) { case 0: webvIEw.reload(); break; case 1: if(webvIEw.canGoBack()){ webvIEw.goBack(); } case 2(webvIEw.canGoForward()){ webvIEw.goForward(); } .onoptionsItemSelected(item); }}
Js代码:
<HTML>head> Meta http-equiv="Content-Type" content="text/HTML; charset=utf-8"/> Title>测试androID程序</body> 测试androID和Js交互 brbutton onClick="showToast()">显示吐司button="showProgressDialog()">显示loadingscript type="text/JavaScript">function showToast(){ AndroID.showToast("显示吐司);} showProgressDialog(){ AndroID.showProgressDialog(显示进度条);}script>
总结
以上是内存溢出为你收集整理的[android] WebView与Js交互全部内容,希望文章能够帮你解决[android] WebView与Js交互所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)