android js调用java方法

本文详细介绍了一种在Android环境中,如何使JavaScript能够调用Java方法的技术方案。具体包括使用WebView加载本地HTML文件,通过addJavascriptInterface将Java对象暴露给JavaScript,以及在JavaScript中调用这些方法的过程。
部署运行你感兴趣的模型镜像

转载自品略图书馆 http://www.pinlue.com/article/2020/06/0300/1110672083746.html

 

 ajax调用java后台的方法,其实是通过url链接来访问。下面是小编为大家带来一篇ajax调用java方法,希望对大家有所帮助。

  android js调用java方法(一)

  [java] view plaincopypublic class JsInterface {

  /*interface for javascript to invokes*/

  public interface wvClientClickListener {

  public void wvHasClickEnvent();

  }

  private wvClientClickListener wvEnventPro = null;

  public void setWvClientClickListener(wvClientClickListener listener) {

  wvEnventPro = listener;

  }

  public void javaFunction() {

  if(wvEnventPro != null)

  wvEnventPro.wvHasClickEnvent();

  }

  }

  /*Js2JavaActivity.JAVA*/

  /*程序入口*/

  [java] view plaincopypublic class Js2JavaActivity extends Activity{

  private Button btn_show,btn_hide;

  private WebView wv;

  private JsInterface JSInterface2 = new JsInterface();

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  // TODO Auto-generated method stub

  super.onCreate(savedInstanceState);

  setContentView(R.layout.js2java);

  btn_show = (Button)findViewById(R.id.btn_java2js_show);

  btn_hide = (Button)findViewById(R.id.btn_java2js_hide);

  wv = (WebView)findViewById(R.id.wv_js2java);

  wv.getSettings().setJavaScriptEnabled(true);

  wv.addJavascriptInterface(JSInterface2,"JSInterface2");

  wv.setWebViewClient(new webviewClient());

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

  }

  class webviewClient extends WebViewClient {

  @Override

  public void onPageFinished(WebView view, String url) {

  // TODO Auto-generated method stub

  super.onPageFinished(view, url);

  btn_show.setOnClickListener(new OnClickListener() {

  @Override

  public void onClick(View v) {

  // TODO Auto-generated method stub

  Toast.makeText(getBaseContext(), "You click show button", 1000).show();

  wv.loadUrl(String.format("javascript:java2js(0)"));//这里是java端调用webview的JS

  }

  });

  btn_hide.setOnClickListener(new OnClickListener() {

  @Override

  public void onClick(View v) {

  // TODO Auto-generated method stub

  Toast.makeText(getBaseContext(), "You click hide button", 1000).show();

  wv.loadUrl(String.format("javascript:java2js(1)"));//这里是java端调用webview的JS

  }

  });

  JSInterface2.setWvClientClickListener(new webviewClick());//这里就是js调用java端的具体实现

  }

  }

  class webviewClick implements wvClientClickListener {

  @Override

  public void wvHasClickEnvent() {

  // TODO Auto-generated method stub

  Toast.makeText(getBaseContext(), "link be on click", 1000).show();

  }

  }

  }
 


 

  android js调用java方法(二)

  JavaJsDemo.java

  package com.demo.android.JavaJsDemo;

  import android.app.Activity;

  import android.os.Bundle;

  import android.webkit.WebView;

  import java.util.ArrayList;

  import java.util.List;

  public class JavaJsDemo extends Activity {

  /** Called when the activity is first created. */

  private WebView web;

  public List<String> list;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  initData();

  setContentView(R.layout.main);

  web = (WebView)this.findViewById(R.id.webview);

  //开启javascript设置

  web.getSettings().setJavaScriptEnabled(true);

  //把RIAExample的一个实例添加到js的全局对象window中

  //这样就可以使用window.javatojs来调用它的方法

  web.addJavascriptInterface(this, "javatojs");

  //加载网页

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

  }

  void initData(){

  list=new ArrayList<String>();

  for(int i=0;i<5;i++){

  list.add("我是List中的第"+(i+1)+"行");

  }

  }

  /**

  * 该方法将在js脚本中,通过window.javatojs.....()进行调用

  * @return

  */

  public Object getObject(int index){

  return list.get(index);

  }

  public int getSize(){

  return list.size();

  }

  public void Callfunction(){

  web.loadUrl("javascript: GetList()");

  }

  }

  index.html

  DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "xxx.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title>demotitle>

  <script language="javascript">

  function GetList(){

  var i=window.javatojs.getSize();

  for(var n=0;n<i;n++){

  var jsdata= window.javatojs.getObject(n);//拿到activity里面的属性javadata

  var datalistdiv = document.getElementById("datalist"); //得到页面的div

  pnode = document.createElement("p");//创建一个p标签,再建个textnode

  tnode = document.createTextNode(jsdata);

  pnode.appendChild(tnode);//p中加入数据

  datalistdiv.appendChild(pnode);//div中键入新的p

  }

  }

  script>

  head>

  <body onload="javascript:window.javatojs.Callfunction()">//调用java方法

  <div id = "datalist">

  this is a demo

  div>

  body>

  html>

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

Android中,您可以使用WebView来加载一个网页,然后通过JavaScript与Java代码进行交互。下面是一个示例: 首先,在您的Java代码中,您需要定义一个类并将其公开给JavaScript使用。例如: ```java public class MyJavaScriptInterface { Context mContext; MyJavaScriptInterface(Context context) { mContext = context; } @JavascriptInterface public void showToast(String toast) { Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show(); } } ``` 在这里,我们定义了一个名为 `MyJavaScriptInterface` 的类,并将其传递给 `Context`,以便我们可以在其中显示Toast消息。我们还定义了一个名为 `showToast` 的方法,并使用 `@JavascriptInterface` 注释将其标记为可以从JavaScript调用。 接下来,在您的Activity中,您需要启用JavaScript,并将您的Java对象添加到WebView中。例如: ```java WebView webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new MyJavaScriptInterface(this), "Android"); webView.loadUrl("file:///android_asset/index.html"); ``` 在这里,我们首先获取WebView实例,然后启用JavaScript。接下来,我们将 `MyJavaScriptInterface` 实例添加到WebView中,并将其命名为 `Android`,这是JavaScript中将使用的名称。最后,我们使用 `loadUrl` 方法将WebView加载到我们的HTML文件中。 最后,在您的JavaScript代码中,您可以使用以下方式调用Java方法: ```javascript Android.showToast("Hello World!"); ``` 在这里,我们使用我们在Java代码中定义的名称 `Android` 来调用 `showToast` 方法,并将消息传递给它。在这种情况下,我们将显示一个Toast消息,显示 "Hello World!"。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值