博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android WebView 和js互调用的使用说明。
阅读量:6096 次
发布时间:2019-06-20

本文共 3400 字,大约阅读时间需要 11 分钟。

hot3.png

这段时间公司同事他们要求讲点android方面的知识(ps:我同事他们都是做PHP的),然后不知道怎么讲才能让他们感兴趣,所以就找了一些WebView的例子跟他们讲了下,下面就是一些关于android调用HTML中js方法和HTML调用android这边的方法的操作。

1,首先大家要知道第一步操作,建立权限,WebView访问是需要访问网络的,所以首先大家不要忘记了在androidmanifest.xml中配置网络权限:

2,android中利用webview调用网页上的JS代码,

android中可以通过webview来实现和JS的交互,在程序中调用js代码,只需要将webivew控件支持的js属性设置为true,然后通过loadUrl就可以直接进行调用,如下:

mWebView.getSettings().setJavaScriptEnabled(true);mWebView.loadUrl("javascript:test()");//调用页面中test JS方法
3,页面上需要调用java代码的方法,在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:

mWebView.addJavascriptInterface(new Object() {             public void clickOnAndroid() {                 mHandler.post(new Runnable() {                     public void run() {                         Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show();                    }                 });             }         }, "demo");
在网页中,只需要像调用JS方法一样,进行调用就可以:

b.c
4,java代码调用JS并传参

首先一样需要带参数的函数形式,但需要注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改,如下所示:

mWebView.addJavascriptInterface(new Object() {             public void clickOnAndroid(final int i) {                 mHandler.post(new Runnable() {                     public void run() {                                 int j = i;                                j++;                Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();                    }                });            }         }, "demo");
然后在HTML页面中,利用如下代码:

b.c
即可以实现互调,

5,下面让我们来看一个实例:

将我们需要的HTML代码预先写好放到assets文件夹下面:

            
登录
然后就是java代码:

import android.annotation.SuppressLint;import android.app.Activity;import android.app.AlertDialog;import android.content.DialogInterface;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebView;import android.widget.Button;public class WordActivity extends Activity {    /** Called when the activity is first created. */	@Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.asd);        //获取webView 控件       final WebView webview=(WebView)findViewById(R.id.webView1);        //加上这句话才能使用javascript方法          webview.getSettings().setJavaScriptEnabled(true);       //webview.loadUrl("http://128.128.191.62/cn/mobile/geturl.html");        //加载assets目录下面的demo.html 界面        webview.loadUrl("file:///android_asset/index2.html");        //增加接口方法,让html页面调用          webview.addJavascriptInterface(this,"login");          Button button = (Button)findViewById(R.id.button1);        button.setOnClickListener(new OnClickListener() {						@Override			public void onClick(View v) {				webview.loadUrl("javascript:updateHtml()");			}		});    }        public void startFunction(){    	AlertDialog.Builder ab=new AlertDialog.Builder(WordActivity.this);		ab.setTitle("提示");		ab.setMessage("通过js 调用了 java 中的方法");		ab.setPositiveButton("确定", new DialogInterface.OnClickListener()		{			@Override			public void onClick(DialogInterface dialog, int which) {				dialog.dismiss();			}		});		ab.create().show();    }}

转载于:https://my.oschina.net/u/1270405/blog/301535

你可能感兴趣的文章
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
Check failed: error == cudaSuccess (7 vs. 0) too many resources requested for launch
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
http://www.blogjava.net/pdw2009/archive/2007/10/08/151180.html
查看>>
hadoop(6)---mapred-site.xml 详解以及常用配置。
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>
JAVA GC
查看>>
codeforce 599B Spongebob and Joke
查看>>
3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)
查看>>