Android之如何使用javascript调用android代码
来源:互联网 发布:有声朗读软件ios 编辑:程序博客网 时间:2024/05/24 05:03
使用javascript调用android代码
1.使用webview对象的addJavascriptInterface方法
2.addJavascriptInterface方法有两个参数,第一个参数就是我们一般会实现一个自己的类,类里面提供我们要提供给javascript访问的方法;第二个参数是访问我们在obj中声明的方法时候所用到的js对象,调用模式为window.interfaceName.方法名()或者是javascript: interfaceName.方法名() ;,如myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android");
3.编写JavaScriptinterface类,如有一个函数名为showToast()的方法
4.在html中调用时的形式:javascript:android.showToast()。
附上一个小例子:
import android.content.Context;import android.widget.Toast;public class JavaScriptinterface { private Context mContext; /** Instantiate the interface and set the context */ public JavaScriptinterface(Context c) { mContext = c; } /** Show a toast from the web page */ public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); }}
import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.view.KeyEvent;import android.webkit.WebView;import android.webkit.WebViewClient;public class MainActivity extends Activity { /** Called when the activity is first created. */ private WebView myWebView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myWebView = (WebView) findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.addJavascriptInterface(new JavaScriptinterface(this), "android"); String htmlText = getFromAssets("test.html"); //把myWebView加载html myWebView.loadData(htmlText, "text/html", "utf-8"); myWebView.setWebViewClient(new myWebViewClient()); } // 此按键监听的是返回键,能够返回到上一个网页(通过网页的hostlistery) public boolean onKeyDown(int keyCode, KeyEvent event) { if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) { myWebView.goBack(); return true; } return super.onKeyDown(keyCode, event); } public String getFromAssets(String fileName) { try { InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName)); BufferedReader bufReader = new BufferedReader(inputReader); String line = ""; String Result = ""; while ((line = bufReader.readLine()) != null) Result += line; if (bufReader != null) bufReader.close(); if (inputReader != null) inputReader.close(); return Result; } catch (Exception e) { e.printStackTrace(); } return null; } class myWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // TODO Auto-generated method stub view.loadUrl(url); return true; } }}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><script type="text/javascript"> function showAndroidToast(toast) { javascript:android.showToast(toast); }</script></head><body><input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" /></body></html>
android的应用程序中,可以直接调用WebView 中的javascript 代码:
import java.io.BufferedReader;import java.io.File;import java.io.InputStreamReader;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Handler;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;public class MainActivity02 extends Activity { /** Called when the activity is first created. */ private WebView webView; private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); webView=(WebView) this.findViewById(R.id.webView); button=(Button) this.findViewById(R.id.button); WebSettings setting=webView.getSettings(); //设置支持javascript setting.setJavaScriptEnabled(true); //增加接口方法,让html页面调用 webView.addJavascriptInterface(new Object(){ //这里我定义了一个拨打的方法 public void startPhone(String num){ Intent intent=new Intent(); intent.setAction(Intent.ACTION_CALL); intent.setData(Uri.parse("tel:"+num)); startActivity(intent); } }, "demo"); //加载页面 webView.loadUrl("file:///android_asset/test2.html"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub webView.loadUrl("javascript:show('activity传过来的数据')"); //调用javascript函数 /* * 通过webView.loadUrl("javascript:xxx")方式就可以调用当前网页中的名称 * 为xxx的javascript方法 */ } }); }}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript"> function show(content){ document.getElementById("countent").innerHTML= "这是我的javascript调用. 这是:"+content; } </script> </head> <body> <table align="center"> <tr><td>姓名</td><td>电话</td></tr> <tr><td>小明</td><td><a href="javascript:demo.startPhone(123)">123</a></td></tr> <tr><td>小王</td><td><a href="javascript:demo.startPhone(456)">456</a></td></tr> </table> <p id="countent">html原始数据</p> </body> </html>
0 0
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- Android之如何使用javascript调用android代码
- 如何使用JavaScript调用android原生代码,android原生代码调用JavaScript
- Android WebView使用之JavaScript调用Java代码注意事项
- javascript调用android代码
- JavaScript调用Android代码
- Android的JS调用Java代码或使用了Javascript相关技术,如何混淆
- WebView原生方法---使用javascript调用android代码
- Android之Webview使用Java代码和JS相互调用
- JavaScript和Android代码相互调用
- Android WebView与JavaScript代码相互调用
- Android Java和JavaScript代码相互调用
- android 中ionic JavaScript调用原生代码
- 如何使用Android 调用update?
- 一键加群android代码如何使用!
- Android问题集锦
- hdu-3507-Print Article-斜率优化
- 第一个博客
- 优化ListView中的item被反复的创建
- Jfinal学习之路---Controller使用
- Android之如何使用javascript调用android代码
- python 字符串操作:截取/替换/查找/分割/翻转
- Python中sorted()方法的用法
- 五种查找算法总结
- ios中如何拍照,录制视频,选择照片
- uboot
- 关于libevent的定时器
- HAVOK只碰撞一个shape的一面
- iOS中block实现的探究