android java调用js方法参数_android中利用webview调用网页上的js代码 Java代码调用js并传递参数...

1.android中利用webview调用网页上的js代码。

Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:

mWebView.getSettings().setJavaScriptEnabled(true);

mWebView.loadUrl("javascript:test()");// 调用js函数

mWebView.loadUrl("file:///android_asset/index.html");// 调用本地assets目录下的html文件,也可以直接调用网上的html文件。

网页上调用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"); //demo是对象名

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

b.c

网页加载立即调用

Java代码调用js并传参

首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:

mWebView.loadUrl("javascript:test('" + aa+ "')"); //aa是js的函数test()的参数

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页面中,利用如下代码

b.c
,即可实现调用

ps:WebView加jquery

public class MainActivity extends Activity {

private static final String TAG = "MainActivity";

// 定义访问的链接

private static String URL = "file:///android_asset/index.html";

// 定义WebView

WebView mWebView = null;

// 定义数据列表

private List programList = null;

private static final int PROGRAM_NUM = 25;

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

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// 在标题栏上显示进度

getWindow().requestFeature(Window.FEATURE_PROGRESS);

// 创建WebView对象

mWebView = new WebView(this);

setContentView(mWebView);

final Activity activity = this;

// 在标题栏显示进度

mWebView.setWebChromeClient(new WebChromeClient() {

public void onProgressChanged(WebView view, int progress) {

activity.setProgress(progress * 100);

}

});

programList = initProgramList();

// 设置JS可用

mWebView.getSettings().setJavaScriptEnabled(true);

// 把programList添加到js的全局对象window中,

// 这样就可以使用window.programList来获取数据

mWebView.addJavascriptInterface(programList, "programList");

mWebView.addJavascriptInterface(this, "MainActivity");

// 加载页面

mWebView.loadUrl(URL);

}

/*

* 定义js回调java函数

*/

public void showSelect(int id) {

Log.i(TAG, "select:" + id);

}

// 绑定键盘的向上,向下按钮事件触发相应的js事件

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {

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

return true;

}

if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {

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

return true;

}

return super.onKeyDown(keyCode, event);

}

// 初始化数据

private List initProgramList() {

List list = new ArrayList();

for (int i = 1; i <= PROGRAM_NUM; i++) {

Program p = new Program(i, "Program:::" + i);

list.add(p);

}

return list;

}

/*

* 定义简单的数据类

*/

class Program {

private int id;

private String name;

public Program(int id, String name) {

this.id = id;

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

对应的html文件:

var startTop = 120;

var startPos = 1;

var totalNum = 0;

var itemHeight = 40;

$(document).ready(function(){

var con = '';

if(window.programList){

//初始化页面

totalNum = window.programList.size();

for(i=0;i< totalNum;i++){

con+='

'+programList.get(i).getName()+'
';

}

}

$('#list').html(con);

//绑定事件

$('.item').click(function(){

var tar = $(this).attr('tar');

//回调java事件

window.MainActivity.showSelect(tar);

});

});

//接收键盘向下事件

function moveDown(){

if(startPos < totalNum){

startPos ++;

var top = (1 - startPos)* itemHeight + startTop;

$('#list').stop().animate({top:top});

}

}

//接收键盘向上事件

function moveUp(){

if(startPos > 1){

startPos --;

var top = (1 - startPos )* itemHeight + startTop;

$('#list').stop().animate({top:top});

}

}

.box{

position:relative;

left:20px;

top:20px;

width:200px;

height:280px;

background-color:#CCC;

overflow:hidden;

}

.list{

position:absolute;

left:10px;

top:120px;

width:180px;

}

.item{

height:40px;

line-height:40px;

}

.select{

position:absolute;

left:4px;

top:120px;

border:1px solid #F00;

height:40px;

width:190px;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值