关于android和javascript函数的互相调用
来源:互联网 发布:java 标准库数据结构 编辑:程序博客网 时间:2024/06/13 06:38
原理其实很简单,借助webview加载本地html文本,加载完成之后调用js函数,最后通过设置的addJavascriptInterface设置的回调接口返回js函数内的计算结果,完成android代码的调用(具体实现如下)。
1、html文本准备:将html文本编辑好添加到android工程下assets文件夹内
html文本内容(android_js.html)
<html><script type="text/javascript"> function androidtojavascript(a,b) {CallBackToAndroid.onResult("I am from javascript end:"+add(a,b)); } function add(a,b){return a+b; }</script></html>
android代码访问路径:file:///android_asset/android_js.html
2、代码
package com.example.androidtojsandbackdemo;import android.os.Bundle;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.webkit.JavascriptInterface;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.Button;import android.annotation.SuppressLint;import android.app.Activity;import android.app.AlertDialog.Builder;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);((Button) findViewById(R.id.show)).setOnClickListener(new OnClickListener() {public void onClick(View v) {if (v.getId() == R.id.show) {testJS();}}});}@SuppressLint({ "JavascriptInterface", "SetJavaScriptEnabled" })private void testJS() {WebView webView = new WebView(MainActivity.this);// 设置WebView属性,能够执行Javascript脚本webView.getSettings().setJavaScriptEnabled(true);// 添加js回调接口webView.addJavascriptInterface(new JsCallBack() {//如果应用的android:targetSdkVersion数值为17+)JS只能访问带有 @JavascriptInterface注解的Java函数public void onResult(String result) {showNoteDialog(result);}}, "CallBackToAndroid");// web加载进度监听webView.setWebViewClient(new WebViewClient() {public void onPageFinished(WebView view, String url) {// 加载完毕之后调用js函数Log.e("加载完成....", url);view.loadUrl("javascript:androidtojavascript(5,6)");};});// 加载本地html文本(里面包含js代码)webView.loadUrl("file:///android_asset/android_js.html");}public interface JsCallBack {//如果应用的android:targetSdkVersion数值为17+)JS只能访问带有 @JavascriptInterface注解的Java函数@JavascriptInterfacepublic void onResult(String result);}private void showNoteDialog(String result) {Builder builder = new Builder(MainActivity.this);builder.setTitle("js代码返回信息").setMessage(result).setPositiveButton("知道了", null).show();}}
到此通过android代码和js代码互调就完成了。
0 0
- 关于android和javascript函数的互相调用
- Android和JavaScript互相调用
- Android和JavaScript互相调用
- Android和JavaScript互相调用
- Android和JavaScript互相调用
- Android和JavaScript互相调用
- Android和JavaScript互相调用
- Android和JavaScript互相调用
- JsBridge实现JavaScript和Android的互相调用
- Android WebView中javascript和java的互相调用
- Android中WebView和JavaScript(JS)的互相调用
- Android WebView 和 javaScript的互相调用(一)
- Android WebView 和 javaScript的互相调用(二)
- Android WebView 和 javaScript的互相调用(三)
- Android中java和javascript方法的互相调用示例
- Android和JavaScript互相调用分析
- android 与JavaScript的互相调用
- JavaScript 和 java 的互相调用
- 结构体struct简介(下)
- 少走弯路的十条忠告-http://www.cnblogs.com/xdp-gacl/p/3952405.html孤傲苍狼的博客
- [模版] 位运算 转自USACO
- 一、安装pip
- codeforces 204A A. Little Elephant and Interval(dp+组合数学)
- 关于android和javascript函数的互相调用
- SignalR 2.0 系列:SignalR简介
- Fragment实现tabhost的效果
- 支付宝外卡收单 使用手册(一) COPYandPAY
- js之Array数组对象属性及方法
- C算法-求素数
- 将一个字符串中的特定字符添加颜色
- 9月2日最新易启秀源码3GB大小700套模版
- HttpURLConnection和HttpClient比较