Android提供了webview和JavaScript之间通信的api,这样就能做到native程序和html程序之间的交互,看下面的例子(html中调用js,传递两个字符串给java程序):
java代码:
public class AndroidJsDemoActivity extends Activity { private WebView mWebView; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setSavePassword(false); webSettings.setSaveFormData(false); webSettings.setJavaScriptEnabled(true); webSettings.setSupportZoom(true); mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "androidjsdemo"); mWebView.loadUrl("file:///android_asset/demo.html"); } final class DemoJavaScriptInterface { DemoJavaScriptInterface() { } public void test(String str1,String str2){ Intent intent=new Intent(AndroidJsDemoActivity.this,Activity2.class); Bundle b=new Bundle(); b.putString("str1", str1); b.putString("str2", str2); intent.putExtras(b); startActivity(intent); } } }html代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>Insert title here</title> </head> <body>this is html page<p> <input type="submit" value="buttons" onclick="androidjsdemo.test('ddd','fff')"/> </body> </html>
重点看代码中标红部分。
androidjsdemo与java程序中
addJavascriptInterface(new DemoJavaScriptInterface(), "androidjsdemo")后面的参数对应
test('ddd','fff')是使用的
DemoJavaScriptInterface的方法
本文转自xyz_lmn51CTO博客,原文链接:http://blog.51cto.com/xyzlmn/1230813,如需转载请自行联系原作者