本文目录一览:
- 1、如何在JAVASCRIPT调用Android JAVA函数
- 2、安卓和javascript交互必须通过webView吗?可以用安卓的其他控件调用js吗?还有他们能通过volley交互吗?
- 3、js给android传参数怎么写
- 4、安卓与js交互时怎样给js端传递数据
- 5、android中webview与js交互
- 6、在Android上怎样实现JAVA和JS交互
如何在JAVASCRIPT调用Android JAVA函数
首先是网页:
%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%
!DOCTYPE HTML
html
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
titlejs和android相互调用/title
head
script type="text/javascript" language="javascript"
//调用java方法jsCallJava()
function showHtmlcallJava() {
var str = window.android.jsCallJava();
document.getElementById("info1").value = str;
}
//调用java方法jsCallJavaWithParams(String var),带参数
function showHtmlcallJava2() {
var str = window.android.jsCallJavaWithParams("Devin Chen");
document.getElementById("info2").value = str;
}
//提供给java调用的方法
function show() {
document.getElementById("id_input").value = "Java调用Html中的方法";
}
//提供给java调用的方法,带参数
function showWithParam(param) {
document.getElementById("id_input2").value = "Java调用Html中的方法: " + param;
}
/script
/head
body
input id="info1" style="width: 90%" type="text" value="null" /br
input type="button" value="Html调用Java方法" onclick="showHtmlcallJava()" /br
input id="info2" style="width: 90%" type="text" value="null" /br
input type="button" value="Html调用带参数的Java方法" onclick="showHtmlcallJava2()" /br
input id="id_input" style="width: 90%" type="text" value="null" /br
input type="button" value="Java调用Html方法" onclick="window.android.javaCallJavaScript()" /br
input id="id_input2" style="width: 90%" type="text" value="null" /br
input type="button" value="Java调用带参数的Html方法" onclick="window.android.javaCallJavaScriptWithParams()" /
/body
/html
Android部分的布局就一个WebView,MainActivity源代码:
/**
* java方法和javascript方法的相互调用
*/
public class MainActivity extends AppCompatActivity {
private static final String url = "";
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mWebView = (WebView) findViewById(R.id.web_main);
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDefaultTextEncodingName("utf-8");
mWebView.loadUrl(url);
mWebView.setWebViewClient(new WebViewClient());
//这两句是必须的,"android"就是jsp中调用方法时window后面的对象
Object obj = getObject();
mWebView.addJavascriptInterface(obj, "android");
}
private Object getObject() {
Object obj = new Object() {
/**
* html中的JavaScript调用Java方法
* 注解是必须的
* @return
*/
@JavascriptInterface
public String jsCallJava() {
return "JavaScript调用Java方法";
}
/**
* html中的JavaScript调用带参数的Java方法
* 注解是必须的
* @return
*/
@JavascriptInterface
public String jsCallJavaWithParams(String var) {
return "JavaScript调用带参数的Java方法" + var;
}
/**
* java调用html中的方法,遗憾的是不知道有什么办法可以拿到返回值
*/
@JavascriptInterface
public void javaCallJavaScript() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:show()");
}
});
}
/**
* java调用html中的方法,并且传递参数,这个有大用
*/
@JavascriptInterface
public void javaCallJavaScriptWithParams() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript:showWithParam('baoge')");
}
});
}
};
return obj;
}
}
安卓和javascript交互必须通过webView吗?可以用安卓的其他控件调用js吗?还有他们能通过volley交互吗?
您好,很高兴能帮助您, Android中webview和js之间的交互 1.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(new Object() { public void clickOnAndroid() { mHandler.post(new Runnable() { public void run() { Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show();} }); } }, "demo"); 在网页中,只需要像调用js方法一样,进行调用就可以 div id='b'a onclick="window.demo.clickOnAndroid()"b.c/a/div 3. Java代码调用js并传参 首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示: mWebView.loadUrl("javascript:test('aa')"); 4.Js中调用java函数并传参 首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示: mWebView.addJavascriptInterface(new Object() { public void clickOnAndroid(final int i) { mHandler.post(new Runnable() { public void run() { int j = i;j++; Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();}});} }, "demo"); 然后在html页面中,利用如下代码div id='b'a onclick="window.demo.clickOnAndroid(2)"b.c/a/div, 即可实现调用 你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”! 如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!
js给android传参数怎么写
webview中js调用本地java方法,这个功能实现起来稍微有点麻烦,不过也不怎么复杂,首先要对webview绑定javascriptInterface,js脚本通过这个接口来调用java代码。 contentWebView.addJavascriptInterface(this, "wst"); javainterface实际就是
安卓与js交互时怎样给js端传递数据
alert(document.getElementById('ha').innerHTML); 如果里面是b点击/b,得到的也是b点击/b. 或 alert(document.getElementById('ha').innerText); // 这个仅IE下有效,但如果里面是b点击/b,得到的只是"点击"
android中webview与js交互
移动开发中,我们经常会遇到混合开发模式,经常是在移动客户端中增加网页,来减少客户端的压力,同时也让软件更加灵活。废话少说,下面直接进入主题。
webView.getSettings().setAppCachePath(getCacheDir().getAbsolutePath());
webView.getSettings().setAppCacheEnabled(true);
if (Constant.DEBUG) {
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}
if (Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
//参数1 定义Android 与js交互的接口, 参数2 与js交互的一个常量,可以是任意一个常量字符串,
但是h5网页调用的时候需要增加这个参数二:handler
public class JSInterface{
@JavascriptInterface//这个标注必须加上 表示js要调用的方法,可以自动识别
public void getShareInfo(String strings) {
//todo android dosomething
}
}
那么 js端该如何调用这个方法呢\
android 和ios的调用方法不一样 因此 h5里面需要区别andorid和ios机型来分别调用移动端方法
如android:
//handler 是与android 约定的常量(最好做成全局通用的常量)
//getShareInfo 是与android 定义的调用方法
以上常量、方法、参数类型 必须一致才能成功调用
WebView提供两个事件回调类给应用层,分别为WebViewClient,WebChromeClient开发者可以继承
这两个类,接手相应事件处理。WebViewClient 主要提供网页加载各个阶段的通知,比如网页开始
加载onPageStarted,网页结束加载onPageFinished等;WebChromeClient主要提供网页加载过程
中提供的数据内容,比如返回网页的title,favicon等。
有需要监听加载网页进度
//需要webBar的可以自定义增加一个webBar
最后,就是大家都知道的webView.loadUrl(url);//url需要加载的网页
那么,如何在android调用js的方法呢
//getMsg() 为js里面暴露的方法
在销毁的时候:
protected void onDestroy() {\
super.onDestroy();\
if (webView != null) {\
webView.loadUrl("about:blank");\
webView.destory();\
}\
}
在Android上怎样实现JAVA和JS交互
android调用js方法比较简单,一行代码搞定。
mWebView.loadUrl("javascript:test('" + aa+ "')");//test就是你js方法,然后是参数
然后是js调用android方法,比较复杂。
a onclick="window.wst.test2(2)"b.c/a
这个window.wst的wst就是Android中自己定义的标识名称,clickOnAndroid方法就是安卓中自定义的方法名。
mWebView.addJavascriptInterface(new MyTest(), "wst");//给android添加一个js接口,标识名称wst
//这里的代码是个类部类
private final class MyTest{
@JavascriptInterface
public void clickOnAndroid(int number) {
MyActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i("number",number);//这里所有代码必须写到主线程中,否则报错。
}
});
}
}
这样就能实现js调用android。
两个方法最重要的都是要启用webview的js功能。
// 启用javascript
mWebView.getSettings().setJavaScriptEnabled(true);
哪里不懂可以继续追问我