android与html的简单JS交互
1.Android调用HTML中的JS方法:(1)在HTML中,JavaScript给Android提供了两个可调用的方法:javacalljs()和javacalljswith(参数);在Android中,通过webview.loadUrl("javascript:方法名");来调用HTML的JS中的方法.(2)demo演示:<html><head&...
1.Android调用HTML中的JS方法:
(1)在HTML中,JavaScript给Android提供了两个可调用的方法:javacalljs()和javacalljswith(参数);
在Android中,通过webview.loadUrl("javascript:方法名");来调用HTML的JS中的方法.
(2)demo演示:
<html>
<head>
<title>Android与HTML互相JS方法调用</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<script type="text/javascript">
function javacalljs(){
document.getElementById("content").innerHTML = "</br>Java(android)调用HTML的方法";
}
function javacalljswith(args){
document.getElementById("content").innerHTML = ("</br>" + args);
}
</script>
</head>
<body>
<h1><div id="content"></div></h1>
</body>
</html>
安卓代码:
WebView contentWebView = (WebView) findViewById(R.id.webview);
//启用JavaScript
contentWebView.getSettings().setJavaScriptEnabled(true);
//加载HTML页面
contentWebView.loadUrl("HTML地址");
contentWebView.addJavascriptInterface(MainActivity.this , "android");
//无参调用Js点击
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 无参数调用
contentWebView.loadUrl("javascript:javacalljs()");
}
});
//有参调用Js点击
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 传递参数调用
contentWebView.loadUrl("javascript:javacalljswith(" + "'这里是调用js方法'" + ")");
}
});
2.HTML调用Android中的方法:
(1)HTML想调用Android中的方法通过οnclick="window.android.startFunction()" ,其中window.android.方法名 调用android方法
(2)demo演示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
contentWebView = (WebView) findViewById(R.id.webview);
// 启用javascript
contentWebView.getSettings().setJavaScriptEnabled(true);
// 从assets目录下面的加载html
contentWebView.loadUrl("HTML网址");
contentWebView.addJavascriptInterface(MainActivity.this,"android");
}
//由于安全原因 需要加 @JavascriptInterface
@JavascriptInterface
public void startFunction(){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,"Toast",Toast.LENGTH_SHORT).show();
}
});
}
@JavascriptInterface
public void startFunction(final String text){
runOnUiThread(new Runnable() {
@Override
public void run() {
new AlertDialog.Builder(MainActivity.this).setMessage(text).show();
}
});
}
网页代码:
<input type="button" value="调用android代码" οnclick="window.android.startFunction()" /><br/>
<input type="button" value="调用android代码并传递参数" οnclick="window.android.startFunction('这里是js调用Android方法')" />
更多推荐
所有评论(0)