android 与html交互java调js与js调java操作
1.首先在项目下建一个assets目录(右击app->New->Folder->Assets Flolder),直接放在项目根目录下和res目录同级别(把所html,js,图片,css等所有网页相关放在这个目录下)r
2.建一个test.html文件代码如下
<html> <script>
function callJS(arg){
document.getElementById('replaceme').innerHTML=arg;
alert("arg="+arg);
} //Android后台java会来调用它
</script>
<body>
<a href="#" onclick="window.alert('AlertfromJavaScript')">
alert调用toast</a><br> <a href="#" onclick="window.android.callAndroid('HellofromBrowser')">
js调用java方法</a><br>
<a href="#" onclick="window.android.callAndroid222('HellofromBrowser2222','333')">
js调用java方法2</a>
<!--//js通过自己定义“android"接口来调用java类中的方法,"android"可以改成任意的,但必须和java中设置的接口名一致-->
<br />
<p id="replaceme">
</p>
<body>
</html>
3.layout文件如下
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/webView"
android:layout_below="@+id/btnUrlShow" /> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="java调用js方法"
android:id="@+id/bt4"
android:layout_below="@+id/bt3"
android:layout_alignLeft="@+id/bt3"
android:layout_alignStart="@+id/bt3" /> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="用来显示html调用的值"
android:id="@+id/textView5"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>
4.activity代码如下
public class WebViewActivity extends Activity {
private Button sendRequest,bt4;
private TextView responseText,textView5; private final Handler handler=new Handler();//只有用handel才能修改android控件的值
private class AndroidBridge //这个类中提供各种js可调用的方法。
{
@JavascriptInterface
public void callAndroid(final String arg)
{
handler.post(new Runnable(){
public void run()
{
Log.d("ZW", "calAndroid("+arg+")");
textView5.setText(arg);
}
});
} @JavascriptInterface
public void callAndroid222(final String arg,final String arg2)
{
handler.post(new Runnable(){
public void run()
{
Log.d("zwzw", "callAndroid222("+arg+","+arg2+")");
textView5.setText(arg);
}
});
}
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
textView5=(TextView)findViewById(R.id.textView5); webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);//让web可以运行js
String url="file:///android_asset/test.html";
webView.loadUrl(url); webView.addJavascriptInterface(new AndroidBridge(), "android"); //将那个实例化的函数类设置为”android"的js接口这个。这里什么android名字前台js调用就用什么,比如这这里给名字为abc,html中调用就用onclick="window.abc.callAndroid(...." //覆盖重写html中js的alert方法,还可以覆盖重写别的方法,可以转到定义去查。。
webView.setWebChromeClient(new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) { Log.d("ZW", "onJsAlert(" + view + "," + url + "," + message + "," + result + ")");
Toast.makeText(WebViewActivity.this, message, Toast.LENGTH_SHORT).show();
result.confirm();
return true;
} });//设置可以被java截获的js事件。 //点android控件调用js方法
bt4=(Button)findViewById(R.id.bt4);
bt4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Log.d("ZW", "onClick(" + v + ")");
webView.loadUrl("javascript:callJS('hello from android')"); //java调用js的函数
}
});
}
}
android 与html交互java调js与js调java操作的更多相关文章
- Android与H5交互(java与js的交互)
一.理论概述 1.js调用java方法 直接调用WebView的该方法就可以添加接口了,不过先要启动交互 // 启用javascript mWebView.getSettings().setJavaS ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- Atitit。Js调用后台语言 java c# php swing android swt的方法大总结
Atitit.Js调用后台语言 java c# php swing android swt的方法大总结 1. Js调用后台语言有三种方法1 2. Swt BrowserFunction 绑定方法 ...
- Android之利用JSBridge库实现Html,JavaScript与Android的所有交互
java 和 js互通框架 WebViewJavascriptBridge是移动UIView和Html交互通信的桥梁,用作者的话来说就是实现java和js的互相调用的桥梁. 替代了WebView的自带 ...
- Android与html5交互 -- WebView使用(一)
Android中使用WebView可加载html5,具体步骤如下: (前提:本地Html5存放到assets文件夹下) 一:使用WebView加载Html5,简单显示 1:清单文件中添加访问权限:an ...
- Java 面试/笔试题神整理 [Java web and android]
Java 面试/笔试题神整理 一.Java web 相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并 ...
- java 编程时候的性能调优
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
- Android与H5交互 原理与对比
原文: https://www.jianshu.com/p/345f4d8a5cfa 1.Android调用JS的方法有2种: (1)通过WebView的loadUrl() // 调用js中的函数: ...
- java后台获取和js拼接展示信息
java后台获取和js拼接展示信息: html页面代码: <div class="results-bd"> <table id="activityInf ...
随机推荐
- Codeforces1023F Mobile Phone Network 【并查集】【最小生成树】
题目大意: 给一些没安排权值的边和安排了权值的边,没被安排的边全要被选入最小生成树,问你最大能把它们的权值和安排成多少.题目分析:假设建好了树,那么树边与剩下的每一条边都能构成一个环,并且非树边的权值 ...
- spfa优化板子
用双端队列,当待加入元素小于队首元素时 加入队首, 否则 加入队尾 slf优化 if(!vis[e.v]) { if(Q.empty()) Q.push_front(e.v); else { if(d ...
- Windows server install mrtg
由于MRTG使用Perl语言编写 , 安装ActivePerl http://downloads.activestate.com/ActivePerl/releases/5.20.1.2000/Act ...
- 记OI退役
前言 (这篇本来在联赛前写了一点,但是一直没有发布.现在退役了,还是把它发出来留作纪念吧!) 其实,这篇随笔早该在停课时就写,可是我却迟迟没有动笔. 可能是我真的太懒了,或许也是我想要逃避自己内心的真 ...
- 单片机的编程语言和开发环境 LET′S TRY“嵌入式编程”: 3 of 6
单片机的编程语言和开发环境 LET′S TRY“嵌入式编程”: 3 of 6 本连载讲解作为嵌入式系统开发技术人员所必需具备的基础知识.这些基础知识是硬件和软件技术人员都应该掌握的共通技术知识. 在“ ...
- 买卖股票的最佳时机II
题目描述 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润. 注意你不能在买入股票前卖出股 ...
- 2018 ICPC 焦作网络赛 E.Jiu Yuan Wants to Eat
题意:四个操作,区间加,区间每个数乘,区间的数变成 2^64-1-x,求区间和. 题解:2^64-1-x=(2^64-1)-x 因为模数为2^64,-x%2^64=-1*x%2^64 由负数取模的性质 ...
- rdesktop ERROR: CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server
错误信息: ERROR: CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to co ...
- A1011. World Cup Betting
With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excite ...
- NLog类库使用探索——编程配置
以编程的方式配置,这是我项目中的,我都不知道为什么使用编程.直接配置不很好吗,估计他也没有研究.直接上步骤和代码: 创建一个LoggingConfiguration对象,用来保存配置信息 至少创建一个 ...