【发布时间】:2016-05-07 01:32:50
【问题描述】:
我正在尝试访问我的 Java 方法 helloWorld();在 Android 中使用 JavaScriptInterface,从我正在查看的页面中使用 WebView
我对此有点陌生,我不知道为什么我的 html 页面没有获得价值
这是我正在使用的 Android 代码:
WebView web;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
web = (WebView) findViewById(R.id.webview01);
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
web.getSettings().setJavaScriptEnabled(true);
web.addJavascriptInterface(jsInterface, "JSInterface");
web.getSettings().setUseWideViewPort(true);
web.getSettings().setLoadWithOverviewMode(true);
web.setWebViewClient(new myWebClient());
web.getSettings().setJavaScriptEnabled(true);
web.loadUrl("http://exampleweb:10110/exWeb/deposits.jsp");
}
public class myWebClient extends WebViewClient
{
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
view.loadUrl(url);
return true;
}
}
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activity) {
this.activity = activity;
}
@JavascriptInterface
public String helloWorld(){
return("hello world");
}
}
}
这是我一直在使用的 JavaScript 代码(在我使用 WebView 查看的页面上)
HTML 按钮
<td> <button type="button" class="btn btn-xs btn-primary connectToAndroid">Test android</button></td>
JavaScript
$(".connectToAndroid").on('click', function () {
var val = window.JSInterface.helloWorld();
alert(val);
});
有谁知道我在这里做错了什么?我只想在我的 HTML 页面中提醒来自 android 的“Hello World”。
任何指针都非常感谢!
【问题讨论】:
-
尝试在
helloWorld中输入一个日志,看看它是否被调用。 -
为什么你用 WINDOW.JSinterface 调用它而不是直接用 JSInterface 调用它?
-
@r4phG 实际上,我不知道为什么,我一直在尝试遵循互联网上的一些指南。我会尝试不使用“窗口”。
-
@Coderap 你试过了吗? :D
-
你在使用之前加载了jquery吗?尝试使用 javascript 而不是 jquery,然后再试一次。
标签: javascript java android html webview