前言:随着前端技术越来越火。许多app中不在是简单的Android原生应用,加入了很多web页。通过android的webView加载一个html。并且我们通常的一些落地页都是用html显示的。那么对于一些具有特殊功能的落地页。比如具有引导注册功能的,用户点击落地页之后跳转App的注册页面,或者登录页面。那么,这就需要html和Android原生进行交互,相互调用。

原理分析

android调用javascript方法:

直接通过webView.loadUrl("JavaScript:show('"+et.getText().toString()+"')");,其实就是直接通过loadUrl()方法,传入javascropt:+方法名。

javascript调用Android方法

(1)定义一个对象,包含js需要调用方法的定义和实现。

(2)webView.addJavascriptInterface(new Object(), "obj");传入。

(3)js调用。

使用方法

(1)定义Android对象

首先需要定义一个类,该类主要用于定义一些方法(接口),以便js调用。

private  classObject {

@JavascriptInterface

public void intent2Activity(String activity){

if(activity.equals("login")){

Intent intent =new Intent(MainActivity.this,LoginActivity.class);

startActivity(intent);

}

}

@JavascriptInterface

public void showDialog(String str){

AlertDialog dialog =newAlertDialog.Builder(MainActivity.this)

.setTitle("消息")

.setMessage(str)

.setPositiveButton("确定",null)

.setNegativeButton("取消",null)

.create();

dialog.show();

}

}

定义了两个方法,一个是跳转activity的方法,另一个是显示消息的方法。

注意:方法前一定要加上注解@JavascriptInterface,不然会没有效果。

在Activity中加入webView,并查找控件,进行一些初始化操作

@SuppressLint("JavascriptInterface")

public voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

et = ((EditText) findViewById(R.id.et));

//加载页面

webView = (WebView) findViewById(R.id.webView);

//允许JavaScript执行

webView.getSettings().setJavaScriptEnabled(true);

webView.getSettings().setDefaultTextEncodingName("utf-8");

// 添加一个对象, 让JS可以访问该对象的方法

webView.addJavascriptInterface(newObject(),"obj");

//找到Html文件,也可以用网络上的文件

webView.loadUrl("file:///android_asset/index.html");

}

webView.addJavascriptInterface(new Object(), "obj");相当于向html中传入了定义的接口对象,对象名为obj。

定义Html对象

因为我用的是android studio,所以在main目录下创建目录assets,并创建文件index.html

更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. Python list sort方法的具体使用
  3. python list.sort()根据多个关键字排序的方法实现
  4. Android(安卓)修改spinner 字体颜色 样式的方法
  5. android消息机制
  6. Android(安卓)录音实现追踪(Android(安卓)7.1)
  7. android仿iPhone滚轮控件实现及源码分析(二)
  8. Android基于Sensor感应器获取重力感应加速度的方法
  9. Android调用webservice

随机推荐

  1. Android Inset Drawable
  2. viewFlipper 之二
  3. 行业关注项
  4. Android Activity (1)
  5. android DDMS 调试初级及小技巧
  6. ### Android 判断app的状态 重启app
  7. Android Studio 导入问题总结-IT蓝豹
  8. Android(安卓)Things阿里云物联网平台的
  9. (Butterknife 注解配置)android studio 3.0
  10. 第11章、日期DatePicker与时间TimePicker