AI智能
改变未来

android使用webView,实现和js中的方法调用

前置条件:
模拟器(运行app)
服务器(运行webView里面要显示的页面)
服务器可以用tomcat,也可用ngnix,这里以ngnix为例。

1、ngnix启动后,会开放本机的80端口
2、模拟器不能用localhost访问本机端口,因为那样访问的是模拟器本机的端口。通过模拟器访问本机端口的方式参看模拟器访问本地电脑的端口

做个demo演示如何在webView中调用html中的js的方法

aaa.html:

......重复代码省略<body><a onclick = \"test()\">aaaa</a><script type = \"text/javascript\">function test(){alert(“弹个窗”);}</script></body>......

将这个文件放进ngnix的html文件夹下(tomcat服务器的话,就放进wabapps目录下的ROOT),然后启动服务器
这样我们的前端页面就准备好了,现在只需要让app去访问这个页面了。

创建一个简单的android项目
新建一个HActivity.java界面作为app的主界面,并去AndroidManifest.xml中声明一下,顺便加上权限:

<user-permission android:name=\"android.permission.INTERNET\">

这个很重要,不然会报错,报错解决方案看这里安卓webView报ERR_CACHE_MISS错误和ERR_CONNECTION_REFUSED错误及解决

下面是HActivity.java的代码:

......public class HActivity extends Activity{WebView w;protected void onCreate(Bundle b){super.onCreate(b);setContentView(R.layout.activity_h);initRes();}private void initRes(){w = findViewById(R.id.wv);TextView t = findViewById(R.id.tv);//启用jsw.getSttings().setJavaScriptEnabled(true);//启用domw.getSttings().setDomStrorageEnabled(true);//允许弹窗w.getSttings().setJacaScriptCanOpenWindowsAutomativally(true);//加载前端的网址w.loadUrl(\"http://10.0.2.2:80/aaa.html\");w.setWebChromeClient(new WebChromeClient());t.setOnclickListener(new View.OnClickListener(){public void onClick(View v){//调用js方法w.loadUrl(\"javascript:test()\");}});}}

可以看到调用js方法还是用的

loadUrl

这个方法,只不过里面的参数是一个固定的格式,也就是

javascript冒号+方法名

HActivity.java 的布局文件activity_h.xml:

其实就是简单的放进去一个webview控件和一个textView控件前者的id叫做\"wv\",后者的id叫做\"tv\",文本是\"点我\".

这时候启动项目,发现我们前端界面显示在屏幕了,然后我们点击前端界面上的aaa能弹出弹窗,但这个是前端界面自己调用的js,不是我们需要的.
我们在java代码中,为一个textView控件设置了监听,点击这个tv会调用js中的test方法,所以我们点一下我们的\”点我\”,这时发现也弹窗了,和前端调用一个效果,至此我们的demo完成了.

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » android使用webView,实现和js中的方法调用