webview java调用js_android WebView java与js相互调用
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相互调用相关推荐
- android js接口调用方法,详解Android JS相互调用
最近在研究Android.JS相互调用,之前没怎么接触过,只知道loadUrl()就可以加载一个网页了,研究过之后发现Android可以调JS,JS也可以调Android原生控件,很开心啊.下面小编就 ...
- WebView使用详解(一)——Native与JS相互调用(附JadX反编译)
前言:念念不忘,必有回响,永远坚持你所坚持的! 相关文章: 1.<WebView使用详解(一)--Native与JS相互调用(附JadX反编译)> 2.<WebView使用详解(二) ...
- Java(JCo3)与SAP系统相互调用
Java(JCo3)与SAP系统相互调用 外部系统(Java)调用BAPI函数 安装JCo3 创建JCo3连接 直连 连接池 DestinationDataProvider接口(不需连接属性配置文件) ...
- net java互相调用_Java与.NET的WebServices相互调用
本文包括两个部分,***部分介绍了如何用.NET做客户端调用Java写的Web Services,第二部分介绍了如何用Java做客户端调用.NET开发的Web Services. 项目需要的工具 ◆W ...
- JAVA 各种实例方法和方法之间的相互调用联系
运行程序: package com.ycnode.javase.test01; public class Test { public static void method1(){ ...
- WebBrowser(IE) 与 JS 相互调用
在开发中我们经常将WebBrowser控件嵌入Winform 程序来浏览网页,既然是网页那么少不了JS.下面就让我们来说说他们两之间的相互调用. 在C#封装的浏览器内核中,Chromium 内核封装有 ...
- html php view调用controller的方法,解决JS无法调用Controller问题的方法
解决JS无法调用Controller问题的方法 闲话少说.先看一下事故现场. 事故现场 现在我要做的就是通过JS去调用后台controller的方法,可以看到客户端用的是Jquery和Ajax,现在出 ...
- Silverlight如何与JS相互调用
1.sl调用js 比如我们在页面中定义一个js函数: <script type="text/javascript"> function fnTest(m ...
- vue.js html 相互传值,Vue 父子组件之间相互调用传值以及多层组件之间相互调用传值...
一.父子组件传值 要点1:父组件赋予子组件属性值,子组件通过props 来接收值. 要点2:父组件可以通过 子组件对象($ref),来调用子组件的属性以及方法 要点3:子组件通过$emit 来调用父组 ...
最新文章
- 【视频课】模型优化拆分!分别学习模型剪枝与模型量化理论与实践
- ASCII码对照表 转帖
- Mac查看本机ip地址
- 面试官 | 线程间是如何通信的?
- Java之品优购部署_day01(8)
- 支付宝兑换的扫地机器人_支付宝里这笔钱赶紧用掉!年底过期作废
- jvm堆内存设置原理
- 运用“异或”对原文加密,并解密
- 商户权限表mysql_MySQL 事务之 Yii2.0 商户提现
- POJ2104 K-TH NUMBER 传说中的主席树
- 瑞萨RX23T开发板一键设置库文件说明
- Xposed模拟位置
- 网络接口 FE GE 10GE SFP
- wifi mouse linux,WiFi Mouse Pro
- Google巧妙发布Sky星空地图
- 100例(p019—p021)
- DB2创建新用户及授权研究
- 两个故事讲述什么是消息队列
- 试题 算法训练 唯一的啥子ALGO-973
- 使用libphonenumber格式化手机号以及归属地查询
热门文章
- C++ vector使用示例
- 简述使jdbc连接mysql数据库,关于JDBC的六个步骤
- android用来显示界面的组件,Android 自学之基本界面组件(上)
- jssdk 保存文件到手机_手机混用闪存到底是真是假?教你查手机闪存型号
- 一文搞懂C++强制类型转换
- 为什么css导航右边有黑色,一段CSS的导航菜单,为什么有了这个左导航之后,右面的区域用不了了...
- ajax each 多级联动,jQuery多级联动效果
- signature php今日头条,今日头条_signature 求解
- 2020.2idea怎么创建html项目_如何为IDEA项目创建GitHub存储库和本地Git存储库
- python os.path