您的位置:首页 > Web前端 > JavaScript

JS和javaScript相互调用

2016-06-07 17:32 731 查看
                                Java和JavaScript相互调用         

            照着写一遍估计你就能明白了,代码不要只看,必须自己去写    

java代码

package com.smart.webview;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast;

/**
* Created by gaomin on 2016/6/7.
*/
public class JSInvokingJavaActivity2 extends Activity{

private WebView mWebView = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_jsinvoking_java);
mWebView = (WebView)findViewById(R.id.webView);

showWebView();
}
@SuppressLint("SetJavaScriptEnabled")
private void showWebView() {
mWebView.requestFocus();
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
JSInvokingJavaActivity2.this.setProgress(newProgress);
JSInvokingJavaActivity2.this.setTitle("Loding....");
if(newProgress>=80){
JSInvokingJavaActivity2.this.setTitle("test JSInvokeJava");
}

}
});
mWebView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if(event.getAction()==KeyEvent.KEYCODE_BACK&&mWebView.canGoBack()){

}
return false;
}
});

WebSettings webSetting = mWebView.getSettings();
webSetting.setJavaScriptEnabled(true);
webSetting.setDefaultTextEncodingName("UTF-8");

class JsObject{
//js调用java代码
@JavascriptInterface
public String toString(){
return "gaomin";
}
@JavascriptInterface
public String HtmlcallJava(){
return "Html Call Java";
}
@JavascriptInterface
public String HtmlcallJava2(final String Param){
return "Html Call Java"+Param;
}
//java调用js代码
@JavascriptInterface
public void JavacallHtml(){
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript: showFromHtml()");
Toast.makeText(JSInvokingJavaActivity2.this, "clickBtn", Toast.LENGTH_SHORT).show();
}
});
}
@JavascriptInterface
public void JavacallHtml2(){
runOnUiThread(new Runnable() {
@Override
public void run() {
mWebView.loadUrl("javascript: showFromHtml2(123)");
Toast.makeText(JSInvokingJavaActivity2.this, "clickBtn", Toast.LENGTH_SHORT).show();
}
});
}
}
mWebView.addJavascriptInterface(new JsObject(),"injiectObject");
mWebView.loadData("file:///android_asset/index.html","text/html",null);
//  mWebView.loadUrl("javascript: alert(injectedObject.toString())");

mWebView.addJavascriptInterface(new JsObject(),"jsObj");
mWebView.loadUrl("file:///android_asset/index.html");

}

}


 

html代码

<html>
<script type="text/javascript" language="javascript">

function showHtmlcallJava(){
var str = window.jsObj.HtmlcallJava();
alert(str);
}

function showHtmlcallJava2(){
var str = window.jsObj.HtmlcallJava2("66666666666");
alert(str);
}

function showFromHtml(){
document.getElementById("id_input").value = "Java call Html";
}

function showFromHtml2(param ){
document.getElementById("id_input2").value = "Java call Html : " + param;
}

</script>

</head>

<body>

<br>
<br>
<br>

<input type="button" value="HtmlcallJava" onclick="showHtmlcallJava()"/>

<br>

<input type="button" value="HtmlcallJava2" onclick="showHtmlcallJava2()"/>

<br>
<br>
<br>
<br>

<input id="id_input" style="width: 90%" type="text" value="null"/>
<br>
<input type="button" value="JavacallHtml" onclick="window.jsObj.JavacallHtml()"/>

<br>
<br>
<br>

<input id="id_input2" style="width: 90%" type="text" value="null"/>
<br>
<input type="button" value="JavacallHtml2" onclick="window.jsObj.JavacallHtml2()"/>

</body>

</html>


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript java