当前位置:首页 » 安卓系统 » androidjs调用java

androidjs调用java

发布时间: 2022-12-09 08:15:41

A. android java怎么调用webview中js方法

Android平台上使用js调用java方法,主要是通过webview控件提供的 webview.addJavascriptInterface(new Person(this), "per"); 这个方法将java对象注入到js中,然后可以在js中通过调用该java对象的方法来实现回调,如下代码:
1.html文件,demo.html<html> <head> <script type="text/javascript" > function updateHtml(type,type2){ document.getElementById("content").innerHTML = "弹出对话框,测试"+type+type2; alert("dialog"); } </script> </head> <body> 这是一个js与android的例子 <a onClick="window.ceshi.startFunction()" href="">弹出对话框</a> 调用对象方法 <a onClick="per.print()" href="">调用对象方法</a> <span id="content"></span> </body> </html>

B. 怎么用js调用java的接口

http://blog.csdn.net/feifei454498130/article/details/6524183 http://blog.csdn.net/kingsollyu/article/details/6656865
参考这两个 webSettings.setJavaScriptEnabled(true); 是启用js,mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo"); 是定义个对象demo,js中调用demo对象就可以调用刚刚定义的java方法 了。这两个是关键

C. 怎么实现javascript中调用java类中的方法

为了方便网页和Android应用的交互,Android系统提供了WebView中JavaScript网页脚本调用Java类方法的机制。只要调用addJavascriptInterface方法即可映射一个Java对象到JavaScript对象上。
1、映射Java对象到JavaScript对象上

代码如下:

mWebView = (WebView) findViewById(R.id.wv_content);
mWebView.setVerticalScrollbarOverlay(true);
final WebSettings settings = mWebView.getSettings();
settings.setSupportZoom(true);

//WebView启用Javascript脚本执行
settings.setJavaScriptEnabled(true);
settings.(true);
//映射Java对象到一个名为”js2java“的Javascript对象上
//JavaScript中可以通过"window.js2java"来调用Java对象的方法
mWebView.addJavascriptInterface(new JSInvokeClass(), "js2java");

代码如下:

/**网页Javascript调用接口**/
class JSInvokeClass {
public void back() {
activity.finish();
}
}

2、JavaScript调用Java对象示例
调用上述JSInvokeClass类对象的back方法,如下:

复制代码 代码如下:

window.js2java.back();

D. 如何在Android平台上使用JS直接调用Java方法

android的webview中使用js调用java方法:
http://blog.csdn.net/feng283797821/article/details/7749095

CSDN详细操作,不懂再追加。

E. 在Android上怎样实现JAVA和JS交互

Android中java与js交互是通过webView来交互的。

WebView(网络视图)能加载显示网页,可以将其视为一个浏览器。它使用了WebKit渲染引擎加载显示网页,实现WebView有以下两种不同的方法:
第一种方法的步骤:
1.在要Activity中实例化WebView组件:WebView webView = new WebView(this);
2.调用WebView的loadUrl()方法,设置WevView要显示的网页:
互联网用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.调用Activity的setContentView( )方法来显示网页视图
4.用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
5.需要在AndroidManifest.xml文件中添加权限,否则会出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET" />

第二种方法的步骤:
1、在布局文件中声明WebView
2、在Activity中实例化WebView
3、调用WebView的loadUrl( )方法,设置WevView要显示的网页
4、为了让WebView能够响应超链接功能,调用setWebViewClient( )方法,设置 WebView视图
5、用WebView点链接看了很多页以后为了让WebView支持回退功能,需要覆盖覆盖Activity类的onKeyDown()方法,如果不做任何处理,点击系统回退剪键,整个浏览器会调用finish()而结束自身,而不是回退到上一页面
6、需要在AndroidManifest.xml文件中添加权限,否则出现Web page not available错误。
<uses-permission android:name="android.permission.INTERNET"/>

F. 如何在android平台上使用js直接调用Java方法

在Cocos2d-js 3.0beta中加入了一个新特性,在Android平台上我们可以通过反射直接在js中调用java的静态方法。它的使用方法很简单:
var o = jsb.reflection.callStaticMethod(className, methodName, methodSignature, parameters...)

在callStaticMethod方法中,我们通过传入Java的类名,方法名,方法签名,参数就可以直接调用Java的静态方法,并且可以获得Java方法的返回值。下面介绍的类名和方法签名可能会有一点奇怪,但是Java的规范就是如此的。

类名
参数中的类名必须是包含Java包路径的完整类名,例如我们在org.cocos2dx.javascript这个包下面写了一个Test类:

package org.cocos2dx.javascript;
public class Test {
public static void hello(String msg){
System.out.println(msg);
}
public static int sum(int a, int b){
return a + b;
}
public static int sum(int a){
return a + 2;
}
}

那么这个Test类的完整类名应该是org/cocos2dx/javascript/Test,注意这里必须是斜线/,而不是在Java代码中我们习惯的点。

方法名
方法名很简单,就是方法本来的名字,例如sum方法的名字就是sum。

方法签名
方法签名稍微有一点复杂,最简单的方法签名是()V,它表示一个没有参数没有返回值的方法。其他一些例子:
(I)V表示参数为一个int,没有返回值的方法;
(I)I表示参数为一个int,返回值为int的方法;
(IF)Z表示参数为一个int和一个float,返回值为boolean的方法;

现在有一些理解了吧,括号内的符号表示参数类型,括号后面的符号表示返回值类型。因为Java是允许函数重载的,可以有多个方法名相同但是参数返回值不同的方法,方法签名正是用来帮助区分这些相同名字的方法的。

G. 在Android上怎样实现JAVA和JS交互

在Android的开发过程中、遇到一个新需求、那就是让Java代码和Javascript代码进行交互、在IOS中实现起来很麻烦、而在Android中相对来说容易、Android对这种交互进行很好的封装、其实可以很简单的用Java代码调用WebView中的js函数、也可以用WebView中的js来调用Android应用中的Java代码

一、网页的JS代码调用ANDROID中JAVA代码的方法

在网页中调用java代码、需要在webview控件中添加javascriptInterface

contentWebView = (WebView) findViewById(R.id.webview);

//启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
contentWebView.addJavascriptInterface(this, "js对象名");

在Activity中定义一个要被js调用的方法、src为js传递过来的参数、如果没有不传也可以的。

public void jsFunction(final String str) {

Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
runOnUiThread(new Runnable() {
@Override
public void run() {
//在里对Android应用的UI进行处理
}
});
}

在网页中、只需要像调用js方法一样、进行调用就可以

<a onClick="window.js对象名.jsFunction(´hello world´)" >

点击调用java代码并传递参数
</a>

二、ANDROID中JAVA代码调用网页的JS代码的方法

Java代码调用js并传参其实是通过WebView的loadUrl方法去调用的、只是参数url的写法不一样

// 无参数调用

contentWebView.loadUrl("javascript:javacalljs()");
// 传递参数调用
contentWebView.loadUrl("javascript:javacalljswithargs("
+ "´hello world´" + ")");

三、JAVA和JS交互注意事项

1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法

2、Java 调用 js 的函数、没有返回值、调用就控制不到

3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间

4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验

H. 如何在JAVASCRIPT调用Android JAVA函数

  • 首先是网页:

<%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%>
<!DOCTYPEHTML>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>js和android相互调用</title>
<head>

<scripttype="text/javascript"language="javascript">
//调用java方法jsCallJava()
functionshowHtmlcallJava(){
varstr=window.android.jsCallJava();
document.getElementById("info1").value=str;
}

//调用java方法jsCallJavaWithParams(Stringvar),带参数
functionshowHtmlcallJava2(){
varstr=window.android.jsCallJavaWithParams("DevinChen");
document.getElementById("info2").value=str;
}

//提供给java调用的方法
functionshow(){
document.getElementById("id_input").value="Java调用Html中的方法";
}

//提供给java调用的方法,带参数
functionshowWithParam(param){
document.getElementById("id_input2").value="Java调用Html中的方法:"+param;
}
</script>
</head>

<body>
<inputid="info1"style="width:90%"type="text"value="null"/><br>
<inputtype="button"value="Html调用Java方法"onclick="showHtmlcallJava()"/><br>
<inputid="info2"style="width:90%"type="text"value="null"/><br>
<inputtype="button"value="Html调用带参数的Java方法"onclick="showHtmlcallJava2()"/><br>
<inputid="id_input"style="width:90%"type="text"value="null"/><br>
<inputtype="button"value="Java调用Html方法"onclick="window.android.javaCallJavaScript()"/><br>
<inputid="id_input2"style="width:90%"type="text"value="null"/><br>
<inputtype="button"value="Java调用带参数的Html方法"onclick="window.android.javaCallJavaScriptWithParams()"/>
</body>
</html>
  • Android部分的布局就一个WebView,MainActivity源代码:

/**
*java方法和javascript方法的相互调用
*/
{
privatestaticfinalStringurl="http://192.168.0.100:8080/server";
privateWebViewmWebView;

@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}

privatevoidinitView(){
mWebView=(WebView)findViewById(R.id.web_main);
WebSettingssettings=mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(url);
mWebView.setWebViewClient(newWebViewClient());
//这两句是必须的,"android"就是jsp中调用方法时window后面的对象
Objectobj=getObject();
mWebView.addJavascriptInterface(obj,"android");
}

privateObjectgetObject(){

Objectobj=newObject(){
/**
*html中的JavaScript调用Java方法
*注解是必须的
*@return
*/
@JavascriptInterface
publicStringjsCallJava(){
return"JavaScript调用Java方法";
}

/**
*html中的JavaScript调用带参数的Java方法
*注解是必须的
*@return
*/
@JavascriptInterface
(Stringvar){
return"JavaScript调用带参数的Java方法"+var;
}

/**
*java调用html中的方法,遗憾的是不知道有什么办法可以拿到返回值
*/
@JavascriptInterface
publicvoidjavaCallJavaScript(){
runOnUiThread(newRunnable(){
@Override
publicvoidrun(){
mWebView.loadUrl("javascript:show()");

}
});
}

/**
*java调用html中的方法,并且传递参数,这个有大用
*/
@JavascriptInterface
(){
runOnUiThread(newRunnable(){
@Override
publicvoidrun(){
mWebView.loadUrl("javascript:showWithParam('baoge')");
}
});
}

};
returnobj;
}
}

I. js怎么调用JAVA方法

用ajax的方法.

首先将要调用的类名和方法名作为参数传给某个servlet.这一步的方法有许多种,用框架,或者直接用xmlHttpRequest对象.

另外,要调用的类名和类的完整包路径最好写在配置文件里
这里假设类名为Hello,方法名为sayHello,并且sayHello方法不带参数,类路径为com.demo.Hello

配置文件AjaxConfig.properties
Hello = com.demo.Hello

于是传入的参数为 class=Hello&method=sayHello
在servlet中作如下处理:
String className=request.getParameter("classname");
String methodName=request.getParameter("method");
String classPath=null;
.
读取配置文件,取出className所对应的值放入classPath变量中(这一步方法有很多种,怎么读配置文件,可以网上找资料,很多的,我就不细写了)
.
Class c=Class.forName(classPath);//加载你所指定的类
Class param[]=new Class[0];//方法的参数为0个
Method m=null;
String returnValue=null;//返回值
try {
m = c.getMethod("sayHello",param);//获取你所指定的类中的指定方法
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

try {
returnValue=(String)m.invoke(c.newInstance(), new Object[0]);//调用你所指定的方法
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
最后,将returnValue的值返回给客户端即可
类Hello.java

public class Hello
{
public String sayHello()
{
return "hello";
}
}

不明白的加67919823,我们一起讨论呀

J. 在Android上怎样实现JAVA和JS交互

完全讲完的话比较多,我就不讲太细,有两种实现方式

1、使用原生的webview 和js交互

2、第二种方式是用第三方框架,这个框架一定要选好,要js android ios都能用 不然最后会发现这个能交互那个不能,代码需要些两套

我上个项目用的:'com.gzsll.jsbridge:library:1.0.0'

具体用法可以网络到

热点内容
linuxpython命令行 发布:2025-03-15 16:19:45 浏览:958
编译androidx86 发布:2025-03-15 16:19:01 浏览:785
戴尔g15怎么切换温度配置文件 发布:2025-03-15 16:16:18 浏览:850
长江存储0 发布:2025-03-15 16:15:35 浏览:46
地狱边境安卓版不支持谷歌怎么办 发布:2025-03-15 16:15:32 浏览:161
kld数据库 发布:2025-03-15 15:46:27 浏览:263
互联网数据库设计 发布:2025-03-15 15:44:42 浏览:240
自适应滤波c语言 发布:2025-03-15 15:40:25 浏览:969
cs狙击脚本 发布:2025-03-15 15:25:15 浏览:344
平板搭建ftp服务器 发布:2025-03-15 15:24:32 浏览:832