项目中需要使用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. C#模拟登录的htmlHelper类

    public class HTMLHelper { /// <summary> /// 获取CooKie /// /// </summary> /// /// <para ...

  2. c#解析XML和JSON

    http://guwei4037.blog.51cto.com/3052247/1344190  

  3. dede留言板BUG解决

    dede留言板刷新后空白BUG解决 DEDE留言板验证码留空或者不正确返回空白页面的解决方法 解决方法如下进入文件/plus/guestbook.php 找到代码ShowMsg("验证码不正 ...

  4. magent——memcached缓存代理服务器

    memcached分布式缓存 我们使用PHP连接多台memcached服务器,做分布式缓存,实现如下: $memcache = new Memcache; $memcache->addServe ...

  5. python django学习资料网站

    python module 模块 https://docs.python.org/2.7/py-modindex.html django框架例子 https://docs.djangoproject. ...

  6. Java Tips: 使用Pattern.split替代String.split

    String.split方法很常用,用于切割字符串,split传入的参数是正则表达式,它的内部是每次都comiple正则表达式,再调用Pattern.split方法: public String[] ...

  7. Eclipse项目导入Android Stuio 配置出现 Timeout waiting to lock buildscript class cache for build file 'H:\studioproject\Generic_SN\build.gradle'

     Eclipse项目导入Android Stuio 配置出现 Error:Timeout waiting to lock buildscript class cache for build file  ...

  8. Java如何从HttpServletRequest中读取HTTP请求的body

    首先贴出原文地址,尊重原作者 http://blog.csdn.net/zxygww/article/details/47045055 注意:下面方法已验证通过. HTTP请求中的是字符串数据: // ...

  9. ubuntu安装openssh-server

    openssh-server是依赖于openssh-clienr的,那ubuntu不是自带了openssh-client吗? 原因是自带的openssh-clien与所要安装的openssh-serv ...

  10. ural 1017. Staircases

    http://acm.timus.ru/problem.aspx?space=1&num=1017 #include <cstdio> #include <cstring&g ...