Android中WebView与Js交互的实现方法

Android中WebView与Js交互的实现方法,第1张

概述获取WebView对象调用WebView对象的getSettings()方法,获取WebSettings对象调用WebSettings对象的setJavaScriptEnabled()方法,设置js可用,参数:布尔值

获取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交互的实现方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1141231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存