我正在构建一个Android应用程序,其中在webView上加载失败的HTTP文件,该文件位于assets文件夹中。下面是失败HTTP文件的代码。
<html>
<head>
</head>
<body>
<a href="javascript:void(0);" onclick="init();">Click on this link for a log
message</a>
<br><br><br><br><br>
<script>
function init(){
android.log('Data from JS');
android.log(android.data);
}
function showMessage(str){
android.log(str);
}
</script>
</body>
</html>
OnCreate Code
//add interface
wv.addJavascriptInterface(jsInterface, "android");//android is the
keyword that will be exposed in js
OnClick方法和界面方法
public void click(View view){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
wv.evaluateJavascript("javascript:showMessage('Hello World!')", null);
}
}
//javascript interface
private class JsInterface {
@JavascriptInterface
//function that will be called from assets/test.js
//js example: android.log('my message');
public String data() {
return "DATA FROM ANDROID";
}
public void log(String msg) {
Log.d("MSG FROM JAVASCRIPT", msg);
}
}
上面是我在JavaScript中使用界面的完整代码。很长一段时间我曾经使用它在我的旧项目中工作,但现在它不工作可以任何一次回答我是这个方法在Android中被弃用或有任何其他解决方法吗?
答案 0 :(得分:0)
这是js接口类:
public class JS_INTERFACE {
Context mContext;
/** Instantiate the interface and set the context */
JS_INTERFACE(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void native_showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
@JavascriptInterface
public void native_ShowNotifyTest1(String toast , String BigOrSmall ) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
WebSettings settings = webView1.getSettings();
// Enable Javascript
settings.setJavaScriptEnabled(true);
webView1.addJavascriptInterface(new JS_INTERFACE(getContext()), "android");
}
我使用onCreateView进行初始化。
更新回答:
在您的应用中使用JQ(简单使用evaluateJavascript):
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
webView.evaluateJavascript("someJQFunction();", null);
}
else {
webView.loadUrl("javascript: someJQFunction();");
}
答案 1 :(得分:-1)
在@JavascriptInterface
之前添加public void log(String msg)
。