如何将值/变量从android java类传递到android 4.4.2 kitkat中的javascript/.html文件
我需要将值/变量(例如整数、字符串)从我的java类传递到android资产中的.html文件。假设它是一个基于用户单击的整数值。我需要将这个整数传递到.html文件(脚本)中,以确定要进行哪个ajax调用(通过if-else循环)。我到处搜索,但找不到答案 我需要在android 4.4.2上实现这一点。提前谢谢 你看到这个了吗?您对将JavaScript代码绑定到Android代码感兴趣。首先声明接口,然后实现将返回整数的方法。然后在如何将值/变量从android java类传递到android 4.4.2 kitkat中的javascript/.html文件,java,javascript,android,Java,Javascript,Android,我需要将值/变量(例如整数、字符串)从我的java类传递到android资产中的.html文件。假设它是一个基于用户单击的整数值。我需要将这个整数传递到.html文件(脚本)中,以确定要进行哪个ajax调用(通过if-else循环)。我到处搜索,但找不到答案 我需要在android 4.4.2上实现这一点。提前谢谢 你看到这个了吗?您对将JavaScript代码绑定到Android代码感兴趣。首先声明接口,然后实现将返回整数的方法。然后在JS代码中调用此方法以获取值 编辑 使用JS的界面: pu
JS
代码中调用此方法以获取值
编辑
使用JS的界面:
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Get the value */
@JavascriptInterface
public int getValue() {
return value
}
}
将此界面添加到您的WebView
:
WebView webView = (WebView) findViewById(R.id.webview);
webView.addJavascriptInterface(new WebAppInterface(this), "Android");
在JS代码中:
var value = Android.getValue();
您的Mainactivity.java可能是这样的
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
public class MainActivity extends Activity {
StringGetter stringGetter;
String key;
WebView webView;
String url;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Here The key value might be an integer or string
// I have used string
key="sending values to javascript";
url = "file:///android_asset/Index.html";
webView =(WebView)findViewById(R.id.webView);
webView.setWebViewClient(new MyBrowser());
stringGetter = new StringGetter(this);
webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.loadUrl(url);
webView.addJavascriptInterface(new StringGetter(this), "AndroidFunction");
}
public class StringGetter {
Context jContext;
StringGetter(Context context){
jContext = context;
}
@JavascriptInterface
public String getString() {
return key;
}
}
private class MyBrowser extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
}
}
你的HTML文件
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script type="text/javascript">
function myMethod(){
var tct = AndroidFunction.getString();
document.getElementById("p").innerHTML = tct;
alert(tct);
}
</script>
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<input type="button" id="btn" value=" Check " onClick="myMethod()"/>
<a class="navbar-brand" href="#">Some Name </a>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href = "#">Home</a></li>
<li class="active"><a href = "#">About</a></li>
<li class="active"><a href = "#">Downloads</a></li>
<li class="active"><a href = "#">Contact</a></li>
<li><div class="dropdown">
<button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Dropdown
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</div></li>
</ul>
</div>
</nav>
<div class="container">
<div class="jumbotron text-center">
<div class="container-fluid">
<div class="row">
<div class="col-md-3">ColUMN 1 contains some text and other components to work with </div>
<div class="col-md-3">COLUMN 2 contains some text and other components to work with </div>
<div class="col-md-3">ColUMN 3 contains some text and other components to work with </div>
<p id="p">hello</p>
</div>
</div>
</div>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
引导101模板
函数myMethod(){
var tct=AndroidFunction.getString();
document.getElementById(“p”).innerHTML=tct;
警报(tct);
}
切换导航
-
下拉列表
第1列包含一些要使用的文本和其他组件
第2列包含一些要处理的文本和其他组件
第3列包含一些要使用的文本和其他组件
你好
我已经读过了。你能给我提供一个简单的方法/代码片段,可以将整数值从java类(onClick方法)传递到.html文件(脚本)吗?非常感谢。我不知道为什么我被困在这个简单的事情,但你的帮助是感激的。我们可以直接使用HTML文件而不是你的JS答案吗?我想使用一个按钮来创建HTML文件,并将变量直接写入HTML中?