项目中需要使用android与js的混编来开发app。

下面就介绍一下吧。

有时候我们需要用js调用native控件,要想实现这个功能,我们需要做的就只有三步:

1.允许webview执行js脚本

2.向js暴露方法

3.访问网页

下面是代码部分:

java:

 package com.bdyx.founder.jsnativedemo;

 import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast; public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.wv);
setWebView();
}
private void setWebView(){
//允许JavaScript执行
webView.getSettings().setJavaScriptEnabled(true);
//向js传递对象
webView.addJavascriptInterface(new ShowToast(),"toastandroid");
//不会node的小伙伴可以保存到assets
//webView.loadUrl("file:///android_asset/index.html");
//访问网页
webView.loadUrl("http://192.168.253.1:8000/");
}
public final class ShowToast {
//Html调用此方法传递数据,注解一定要留着否则会出错
@JavascriptInterface
public void show() {
Toast.makeText(MainActivity.this,"调用",Toast.LENGTH_LONG).show();
}
}
}

html:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>weifengzz</title>
<script type="text/javascript">
function showToast() {
window.toastandroid.show();
}
</script>
</head>
<body>
<h1>本例子是点击按钮调用android代码</h1>
<input type="button" name="" value="点击调用" onclick="javascript:showToast()"/> </body>
</html>

其实就是这么简单!

项目已经传到github上了

https://github.com/weifengzz/JSWidthAndroidNative

Android与JS混编(js调用java)的更多相关文章

  1. 解析android framework下利用app_process来调用java写的命令及示例

    解析android framework下利用app_process来调用java写的命令及示例 在android SDK的framework/base/cmds目录下了,有不少目录,这些目的最终都是b ...

  2. 深入了解android平台的jni---本地多线程调用java代码

    一.jni调用java对象     JNI提供的功能之一是在本地代码中使用Java对象.包括:创建一个java类对象和通过函数传递一个java对象.创建一个java类对象,首先需要得到得到使用Find ...

  3. Android JNI之C/C++层调用JAVA

    转载请声明:原文转自:http://www.cnblogs.com/xiezie/p/5930032.html 从C/C++层调用JAVA层代码步骤: 1. 在JAVA类中创建java方法和本地方法 ...

  4. Android与JS混编(js调用android相机)

       参考android相机调用,http://blog.csdn.net/yanzi1225627/article/details/33028041/,谢谢 相机怎么调用就不做赘述了,下面是js调用 ...

  5. Android与JS混编(js调用android相机扫描二维码)

    参考demo http://www.cnblogs.com/mythou/p/3280023.html        项目源码: https://github.com/weifengzz/Androi ...

  6. Android与JS混编(多图选择器)

       github: https://github.com/weifengzz/AndroidJSSelectImg

  7. [Android] 解析android framework下利用app_process来调用java写的命令及示例

    reference to :http://bbs.9ria.com/thread-253058-1-1.html 在android SDK的framework/base/cmds目录下了,有不少目录, ...

  8. swift与OC混编之调用函数

    在桥接头文件里#import oc的.h文件,整个swift工程都能使用该oc文件,在.h里暴露的方法都能被该工程使用 //oc文件 TestOC.h #import @interface TestO ...

  9. Flutter学习笔记(30)--Android原生与Flutter混编

    如需转载,请注明出处:Flutter学习笔记(30)--Android原生与Flutter混编 这篇文章旨在学习如何在现有的Android原生项目上集成Flutter,实现Android与Flutte ...

随机推荐

  1. js获取当前的时间(包含星期)

    <script type="text/javascript">        setInterval("www_zzje_net.innerHTML=new ...

  2. MySQL学习笔记(1) - cmd登陆和退出

    1. 打开cmd,输入,回车 mysql -uroot -p -P3306 -h127. 1)-u :指定用户名,root为超级权限用户. 2)-p :输入密码,不指定时回车后会提示输入密码,并用*号 ...

  3. jQuery自学笔记(五):关于jQuery的遍历

    向上遍历 DOM 树 parent()  //返回被选元素的直接父元素,该方法只会向上一级对 DOM 树进行遍历. parents()    //返回被选元素的所有祖先元素,它一路向上直到文档的根元素 ...

  4. XML预定义的实体

    在TSQL读取XML中一些特定的字符时出错,在XML中有些自付要用实体: 下面是五个在XML文档中预定义好的实体: < < 小于号 > > 大于号 & & 和  ...

  5. pyqt5通过文本对话框打开文件

    点击按钮,打开文本对话框,找一人文件,打开并显示内容 QFIleDialog                                                              ...

  6. Swift 可选类型-备

    我们先看看如下代码: var n1: Int = 10 n1 = nil         //编译错误 let str: String = nil    //编译错误 Int和String类型不能接受 ...

  7. Oracle RAC 环境下的连接管理

    http://blog.csdn.net/cyxlxp8411/article/details/7634003

  8. Visio 下载,及密钥

    Visio2010简体中文高级版(永久激活密钥:GR24B-GC2XY-KRXRG-2TRJJ-4X7DC) ed2k://|file|cn_visio_2010_x64_516562.exe|515 ...

  9. 【VC编程技巧】文件☞2.3CArchive的用法

    CArchive 对象提供了一个类型安全缓冲机制CArchive 对象提供了一个类型安全缓冲机制.用于将可序列化对象写入CFile 对象或从中读取可序列化对象.通常,CFile 对象表示磁盘文件:但是 ...

  10. expect 批量监控主机

    [oracle@OAPRIMARY shell]$ cat expect.sh while read line do user=`echo $line | awk '{print $1}'` ip=` ...