js中调用android中的方法
来源:互联网 发布:淘宝美工兼职 编辑:程序博客网 时间:2024/04/30 10:19
js中调用android中的方法
有时用h5写的html页面,在android原生开发的app中用webview加载显示,有时需要与android在的代码交互,即调用其中的方法,示例如下:见代码
package com.my.mywebview; import android.annotation.SuppressLint; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebSettings; import android.webkit.WebView; import android.widget.Button; @SuppressLint("SetJavaScriptEnabled") public class MainActivity extends Activity { //声明一个webview private WebView mWebView; private MyWebViewClient WVClient; private WebSettings webSettings; private MyWebChromeClient chromeClient; //测试Button,忽略就行 private Button testBtn; //调用JS的Button private Button callJSBtn; //双击返回退出应用 private long exitTime = 0; //Object对象,用来跟JS网页绑定 private JSObject jsobject; //android调用JS网页的时候会用到 private Handler mHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { // TODO Auto-generated method stub mWebView = (WebView) findViewById(R.id.webview); testBtn = (Button)findViewById(R.id.diyWeb); callJSBtn = (Button)findViewById(R.id.calljs); WVClient = new MyWebViewClient(); chromeClient = new MyWebChromeClient(); jsobject = new JSObject(MainActivity.this); webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setBuiltInZoomControls(true); webSettings.setSavePassword(false); //支持多种分辨率,需要js网页支持 webSettings.setUserAgentString("mac os"); webSettings.setDefaultTextEncodingName("utf-8"); //显示本地js网页 mWebView.loadUrl(StringUrl.TEST_NET); mWebView.setWebViewClient(WVClient); mWebView.setWebChromeClient(chromeClient); //注意第二个参数JsTest,这个是JS网页调用Android方法的一个类似ID的东西 mWebView.addJavascriptInterface(jsobject, "JsObject"); //测试自定义网页,忽略 testBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String str = "test my web"; mWebView.loadData("<html><body>"+str+"<html><body>", "text/html", "UTF-8"); } }); //调用JS网页 callJSBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mHandler.post(new Runnable() { @Override public void run() { // TODO Auto-generated method stub //调用JS中的 函数,当然也可以不传参 mWebView.loadUrl("javascript:androidCallJS('顺便传个参数给JS!')"); } }); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } //单击系统返回键网页回退 @Override public void onBackPressed() { // TODO Auto-generated method stub //if (System.currentTimeMillis() - exitTime > 1500) { if (mWebView.canGoBack()) { mWebView.goBack(); }/*else { Toast.makeText(this, "再按一次返回键退出", Toast.LENGTH_SHORT).show(); } exitTime = System.currentTimeMillis(); } */ else { this.finish(); } } } [java] view plain copypackage com.chinaonenet.mywebview; import android.content.Context; import android.util.Log; import android.webkit.JavascriptInterface; import android.widget.Toast; public class JSObject { /* * 绑定的object对象 * */ private Context context; public JSObject(Context context){ this.context = context; } /* * JS调用android的方法 * @JavascriptInterface仍然必不可少 * */ @JavascriptInterface public void ShowPic(String currentPcl,String totalPcl){ if(TextUtils.isEmpty(totalPcl)){ return ; } String[] split = totalPcl.split(","); ArrayList<String> stringList = new ArrayList<>(); for(String s:split){ stringList.add(s); } int pos = getPos(currentPcl, stringList); Common.imageBrowse(NewsDetail.this,pos,stringList,true); } } //下面是网页里调用的写法 JSObject是java代码中注册的那个类接口,ShowPic是那个要调用的方法$("img").click(function() { JSObject.ShowPic(this.src,str);});
--- end ---
0 0
- js中调用android中的方法
- android 调用js中的方法
- android 调用js中的方法
- Android中WebView使用3,html掉android中的方法webView调用js中的方法
- android中webview调用js方法,js调用java方法
- Delphi 中调用JS文件中的方法
- js与Android交互之js调用Android中的方法
- Android中调用隐藏类中的方法
- Android adapter中调用activity中的方法
- js调用方法中的方法
- Js调用android方法
- js 调用 android 方法
- JS调用Android方法
- js 中方法调用
- Android中调用js方法及js中调用本地方法
- WebView---Android中调用js方法及js中调用本地方法
- 在C++中怎么调用一个js中的方法
- 在c++中调用Html中的js方法
- DeepFace--Facebook的人脸识别
- ThinkPhp 3.2 U函数,入口文件跳转方法
- 三维感应仪器系数
- 422 tvs选型
- codevs 3304 水果姐逛水果街Ⅰ 解题记录
- js中调用android中的方法
- LintCode(easy)最长上升连续子序列
- Topcoder SRM 569 1000pt
- Java基础复习---对象构造(构造器)
- Maven学习笔记(一)-Maven安装与环境变量配置
- 第七周项目二----建立链串的算法库
- 【Linux4.1.12源码分析】二层报文发送之net_tx_action
- 面向对象开发的几个核心的思想和概念
- event事件对象