android WebView java与js相互调用

发布时间:2020-07-14 00:42:42

来源:51CTO

阅读:454

作者:向往宇宙

android webView js 使用

1、js调用java

1、1 js代码

function call(){

window.androidInterface.call('02585818031');

}

1.2、java代码

package com.example.webview;

import android.annotation.SuppressLint;

import android.content.Intent;

import android.net.Uri;

import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.KeyEvent;

import android.view.Menu;

import android.view.MenuItem;

import android.view.Window;

import android.webkit.JavascriptInterface;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.webkit.WebViewClient;

@SuppressLint("JavascriptInterface")

public class MainActivity extends ActionBarActivity {

private WebView webView;

private int screenHeight;

private int screenWidth;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE); //设置无标题

setContentView(R.layout.activity_main);

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

WebSettings webSettings = webView.getSettings();

webSettings.setBuiltInZoomControls(true);

webSettings.setLoadWithOverviewMode(true);

webSettings.setJavaScriptEnabled(true);

webView.setWebViewClient(new MyWebViewClient());

webView.addJavascriptInterface(new MyAndroidInterface(), "androidInterface");

String url ="file:///android_asset/tangbangjidian/fuwu.html";

//String url ="file:///android_asset/baitian/index.html";

webView.loadUrl(url);

}

class MyAndroidInterface{

public MyAndroidInterface(){};

@JavascriptInterface //注意:加上这行注解

public void call(String number){

//用intent启动拨打电话

Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number));

startActivity(intent);

}

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {

webView.goBack(); //goBack()表示返回WebView的上一页面

return false;

}

return true;

}

private class MyWebViewClient extends WebViewClient{

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

view.loadUrl(url);// 当打开新链接时,使用当前的 WebView,不会使用系统其他浏览器

return true;

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

2、java 调用js

2.1、java代码,webView为WebView对象

// 无参数调用

webView.loadUrl("javascript:javacalljs()");

// 传递参数调用

webView.loadUrl("javascript:javacalljswithargs(" + "'hello world'" + ")");

2.2、js代码

function javacalljs(){

document.getElementById("content").innerHTML +=

"
java调用了js函数";

}

function javacalljswithargs(arg){

document.getElementById("content").innerHTML +=

("
"+arg);

}

webview java调用js_android WebView java与js相互调用相关推荐

  1. android js接口调用方法,详解Android JS相互调用

    最近在研究Android.JS相互调用,之前没怎么接触过,只知道loadUrl()就可以加载一个网页了,研究过之后发现Android可以调JS,JS也可以调Android原生控件,很开心啊.下面小编就 ...

  2. WebView使用详解(一)——Native与JS相互调用(附JadX反编译)

    前言:念念不忘,必有回响,永远坚持你所坚持的! 相关文章: 1.<WebView使用详解(一)--Native与JS相互调用(附JadX反编译)> 2.<WebView使用详解(二) ...

  3. Java(JCo3)与SAP系统相互调用

    Java(JCo3)与SAP系统相互调用 外部系统(Java)调用BAPI函数 安装JCo3 创建JCo3连接 直连 连接池 DestinationDataProvider接口(不需连接属性配置文件) ...

  4. net java互相调用_Java与.NET的WebServices相互调用

    本文包括两个部分,***部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services. 项目需要的工具 ◆W ...

  5. JAVA 各种实例方法和方法之间的相互调用联系

    运行程序: package com.ycnode.javase.test01; public class Test { public static void method1(){            ...

  6. WebBrowser(IE) 与 JS 相互调用

    在开发中我们经常将WebBrowser控件嵌入Winform 程序来浏览网页,既然是网页那么少不了JS.下面就让我们来说说他们两之间的相互调用. 在C#封装的浏览器内核中,Chromium 内核封装有 ...

  7. html php view调用controller的方法,解决JS无法调用Controller问题的方法

    解决JS无法调用Controller问题的方法 闲话少说.先看一下事故现场. 事故现场 现在我要做的就是通过JS去调用后台controller的方法,可以看到客户端用的是Jquery和Ajax,现在出 ...

  8. Silverlight如何与JS相互调用

    1.sl调用js 比如我们在页面中定义一个js函数: <script type="text/javascript">         function fnTest(m ...

  9. vue.js html 相互传值,Vue 父子组件之间相互调用传值以及多层组件之间相互调用传值...

    一.父子组件传值 要点1:父组件赋予子组件属性值,子组件通过props 来接收值. 要点2:父组件可以通过 子组件对象($ref),来调用子组件的属性以及方法 要点3:子组件通过$emit 来调用父组 ...

最新文章

  1. 【视频课】模型优化拆分!分别学习模型剪枝与模型量化理论与实践
  2. ASCII码对照表 转帖
  3. Mac查看本机ip地址
  4. 面试官 | 线程间是如何通信的?
  5. Java之品优购部署_day01(8)
  6. 支付宝兑换的扫地机器人_支付宝里这笔钱赶紧用掉!年底过期作废
  7. jvm堆内存设置原理
  8. 运用“异或”对原文加密,并解密
  9. 商户权限表mysql_MySQL 事务之 Yii2.0 商户提现
  10. POJ2104 K-TH NUMBER 传说中的主席树
  11. 瑞萨RX23T开发板一键设置库文件说明
  12. Xposed模拟位置
  13. 网络接口 FE GE 10GE SFP
  14. wifi mouse linux,WiFi Mouse Pro
  15. Google巧妙发布Sky星空地图
  16. 100例(p019—p021)
  17. DB2创建新用户及授权研究
  18. 两个故事讲述什么是消息队列
  19. 试题 算法训练 唯一的啥子ALGO-973
  20. 使用libphonenumber格式化手机号以及归属地查询

热门文章

  1. C++ vector使用示例
  2. 简述使jdbc连接mysql数据库,关于JDBC的六个步骤
  3. android用来显示界面的组件,Android 自学之基本界面组件(上)
  4. jssdk 保存文件到手机_手机混用闪存到底是真是假?教你查手机闪存型号
  5. 一文搞懂C++强制类型转换
  6. 为什么css导航右边有黑色,一段CSS的导航菜单,为什么有了这个左导航之后,右面的区域用不了了...
  7. ajax each 多级联动,jQuery多级联动效果
  8. signature php今日头条,今日头条_signature 求解
  9. 2020.2idea怎么创建html项目_如何为IDEA项目创建GitHub存储库和本地Git存储库
  10. python os.path