安卓js传值到java_Android—android与js交互以及相互传参

packagecom.homer.jsandroid;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.StringTokenizer;importandroid.R.anim;importandroid.annotation.SuppressLint;importandroid.app.Activity;importandroid.content.pm.ActivityInfo;importandroid.os.Bundle;importandroid.os.Handler;importandroid.view.KeyEvent;importandroid.view.View;importandroid.webkit.WebChromeClient;importandroid.webkit.WebSettings;importandroid.webkit.WebView;importandroid.widget.TextView;importandroid.widget.Toast;public class JSAndroidActivity extendsActivity {private Activity mActivity = null;private WebView mWebView = null;privateString message;privateJsInterface jsInterface;private String[] params = null;

@Overrideprotected voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

mActivity= this;//锁定横屏

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setContentView(R.layout.main);

params= new String[2];

jsInterface= newJsInterface();

showWebView();

}

@SuppressLint("SetJavaScriptEnabled")private voidshowWebView() {try{

mWebView=(WebView) findViewById(R.id.mWebView);

mWebView.requestFocus();

mWebView.setWebChromeClient(newWebChromeClient() {

@Overridepublic void onProgressChanged(WebView view, intprogress) {

JSAndroidActivity.this.setTitle("Loading...");

JSAndroidActivity.this.setProgress(progress);if (progress >= 80) {

JSAndroidActivity.this.setTitle("JsAndroid Test");

}

}

});

mWebView.setOnKeyListener(newView.OnKeyListener() {

@Overridepublic boolean onKey(View v, intkeyCode, KeyEvent event) {if (keyCode ==KeyEvent.KEYCODE_BACK&&mWebView.canGoBack()) {

mWebView.goBack();return true;

}return false;

}

});//WebView的管理设置状态

WebSettings webSettings =mWebView.getSettings();//设置android下容许执行js的脚本

webSettings.setJavaScriptEnabled(true);//编码方式

webSettings.setDefaultTextEncodingName("utf-8");/** 使用这个函数将一个对象绑定到Javascript,因此可以从Javascript访问的方法,

* Android(Java)与js(HTML)交互的接口函数, jsObj 为桥连对象可随意设值*/mWebView.addJavascriptInterface(jsInterface,"jsObj");/** Android(Java)访问js(HTML)端代码是通过loadUrl函数实现的,访问格式如:

* mWebView.loadUrl("javascript: showFromHtml()");*/mWebView.loadUrl("file:///android_asset/index.html");

}catch(Exception e) {

e.printStackTrace();

}

}private classJsInterface {/*** js中通过window.jsObj.HtmlcallJava2("参数") 可以调用此方法并且把js中input中的值作为参数传入,

* 但这是在点击js中的按钮得到的,若实现点击java中的按钮得到,需要方法 clickView(View v)

*

*@paramparam*/

public void HtmlcallJava2(finalString param) {

message=param;

String str=message;

StringTokenizer st= new StringTokenizer(str, ",;");while(st.hasMoreTokens()) {for (int i = 0; i < params.length; i++) {

params[i]=st.nextToken();

System.out.println(params[i]);

}

}

Toast.makeText(JSAndroidActivity.this, param, Toast.LENGTH_SHORT)

.show();

}

}/*** button的点击事件

*

*@paramv*/

public voidclickView(View v) {

runOnUiThread(newRunnable() {

@Overridepublic voidrun() {/*** 调用js中的方法实现点击java中的按钮得到js中input的值*/mWebView.loadUrl("javascript: showHtmlcallJava2()");

}

});

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值