导航:首页 > 编程语言 > androidjs调用java

androidjs调用java

发布时间:2022-03-06 02:25:06

⑴ 如何在javaSCRIPT调用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写业务脚本、以提升加载速度、改善用户体验。

⑵ 在WebView中如何让JS与Java安全地互相调用

android中利用webview调用网页上的js代码。
Android中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2.网页上调用android中java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(newObject(){
publicvoidclickOnAndroid(){
mHandler.post(newRunnable(){
publicvoidrun(){
Toast.makeText(Test.this,"测试调用java",Toast.LENGTH_LONG).show();
}
});
}
},"demo");
在网页中,只需要像调用js方法一样,进行调用就可以
<divid='b'><aonclick="window.demo.clickOnAndroid()">b.c</a></div>
3.Java代码调用js并传参
首先需要带参数的js函数,如functiontest(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(newObject(){
publicvoidclickOnAndroid(finalinti){
mHandler.post(newRunnable(){
publicvoidrun(){
intj=i;
j++;
Toast.makeText(Test.this,"测试调用java"+String.valueOf(j),Toast.LENGTH_LONG).show();
}
});
}
},"demo");
然后在html页面中,利用如下代码<divid='b'><aonclick="window.demo.clickOnAndroid(2)">b.c</a></div>,

⑶ 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>

⑷ 怎么实现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();

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

通过webview进行js调用

webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
{

DemoJavaScriptInterface(){
}

/**
*ThisisnotcalledontheUIthread.Postarunnabletoinvoke
*loadUrlontheUIthread.
*/
publicvoidclickOnAndroid(){
mHandler.post(newRunnable(){
publicvoidrun(){
mWebView.loadUrl("javascript:wave()");
}
});

}
}

js调用

window.demo.clickOnAndroid()

⑹ 如何在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是允许函数重载的,可以有多个方法名相同但是参数返回值不同的方法,方法签名正是用来帮助区分这些相同名字的方法的。

⑺ Android webview javascript 调用 java 应用闪退 并报错 VM aborting

protectedvoidonCreate(BundlesavedInstanceState)
{
........
x=(WebView)this.findViewById(R.id.webView_viewTable);
x.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
x.getSettings().setBuiltInZoomControls(true);
x.getSettings().setJavaScriptEnabled(true);
x.addJavascriptInterface(newJsToJava(),"stub");//JsToJava是内部类,代码在后面。stub是接口名字。

x.loadDataWithBaseURL("",data,"text/html","UTF-8","");//这句里面data是init.html的内容。就是代码。直接用FileInputStream获取到就好。
x.loadUrl("javascript:setValuesJson('helloworld')");//helloworld是给JavaScript传递的参数。setValuesJson是页面里JavaScript的方法。如果传递的参数中有双引号的话,用下面的写法:
Stringurl="javascript:setValuesJson(""+jsonString+"")";
x.loadUrl(url);
.........
}//onCreate结束

⑻ webview 远程js调用本地java实现交互怎么做

可以,只要你是用webview打开的,那么不管事远程还是本地,都可以通过webview与app的本地java代码进行交互。没有任何区别。

1、webview必须设置支持Javascript

mWebview.getSettings().setJavaScriptEnabled(true);

2、加进一个回调的代理类JavaScriptInterface,并给它一个调用的名称:ncp

mWebView.addJavascriptInterface(newJavaScriptInterface(),"ncp");
finalclassJavaScriptInterface{

publicintcallOnJs(){

return1000;
}

publicvoidcallOnJs2(Stringmode){
//TODO
}

}

3、JS页面

<scripttype="text/javascript">
window.onload=function(){
document.getElementById('btn_1').addEventListener('click',onBtnClick,false);
var_int_value=window.ncp.callOnJs();
alert("getintfromjava:"+_int_value);
}
functiononBtnClick(){
window.ncp.callOnJs2("click");
}
</script>

接下来就可以调用js方法了,

1、Java调用js方法

mWebView.loadUrl("javascript:onSaveCallback()");

2、JS访问java方法

window.ncp.callOnJs2("click");

⑼ android WebApp 集成方式怎么使用java调用js

例如,在下面的例子中我们会调用一个Java方法,它弹出一个android的Alert对话框。 //给我们熟悉的AppActivity类稍微加点东西 public class AppActivity extends Cocos2dxActivity { private static AppActivity app = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); app = this; } public static void showAlertDialog(final String title,final String message) { //这里一定要使用runOnUiThread app.runOnUiThread(new Runnable() { @Override public void run() { AlertDialog alertDialog = new AlertDialog.Builder(app).create(); alertDialog.setTitle(title); alertDialog.setMessage(message); alertDialog.setIcon(R.drawable.icon); alertDialog.show(); } }); } } 然后我们在js中调用 jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "showAlertDialog", "(Ljava/lang/String;Ljava/lang/String;)V", "title", "hahahahha");

⑽ 怎么用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方法 了。这两个是关键

阅读全文

与androidjs调用java相关的资料

热点内容
优信二手车解压后过户 浏览:63
Windows常用c编译器 浏览:780
关于改善国家网络安全的行政命令 浏览:835
安卓如何下载网易荒野pc服 浏览:656
javainetaddress 浏览:106
苹果4s固件下载完了怎么解压 浏览:1005
命令zpa 浏览:288
python编译器小程序 浏览:946
在app上看视频怎么光线调暗 浏览:541
可以中文解压的解压软件 浏览:594
安卓卸载组件应用怎么安装 浏览:914
使用面向对象编程的方式 浏览:341
程序员项目经理的年终总结范文 浏览:932
内衣的加密设计用来干嘛的 浏览:434
淮安数据加密 浏览:294
魔高一丈指标源码 浏览:983
松下php研究所 浏览:169
c回调java 浏览:402
梦幻端游长安地图互通源码 浏览:747
电脑本地文件如何上传服务器 浏览:315