这段时间公司同事他们要求讲点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方法一样,进行调用就可以:
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页面中,利用如下代码:
即可以实现互调,
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(); }}