我知道已经问过here。
但即使按照此处接受的答案(以及类似的其他问题) - 由于未捕获的ReferenceError,我无法将我的客户端Android代码链接到我的JavaScript。
我的Android代码段 -
public class WebActivityExample extends Activity {
WebView mWebView;
WebAppInterface WAInterface;
@Override
public void onCreate(Bundle savedInstanceState) {
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
WAInterface = new WebAppInterface(this);
mWebView.addJavascriptInterface(WAInterface, "Android");
mWebView.loadUrl("http://myurlhere");
}
public class WebAppInterface {
Context mContext;
/** Instantiate the interface and set the context */
WebAppInterface(Context c) {
mContext = c;
}
/** Show a toast from the web page */
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
System.out.println("toast " + toast);
}
}
}
我的网站在客户端运行AngularJS,在服务器端运行PHP。因此,我有一个index.php
文件,其中包含我的所有JavaScript文件以及需要包含在整个应用程序中的CSS文件。
这是我的HTML代码 -
(这是一个包含HTML按钮的Angular模板视图) -
<input type ="button" value="Say Hello!" onClick="showAndroidToast('Hello Android!')" />
这是我的index.php文件,其中包含所有JS / CSS文件 -
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="myapp">
<head>
(various scripts and stylesheets included here)
</head>
<body>
....
....
<script type="text/javascript">
function showAndroidToast(toast) {
alert(toast);
Android.showToast(toast);
}
</script>
</body>
</html>
onClick肯定会调用showAndroidToast函数,因为警报会弹出消息“Hello Android&#39; - 但我无法将其链接到Android功能&#39; showToast&#39;。我已经按照Android上的文档和Stackoverflow上的各种答案进行了完全相同的操作 - 但最终还是得到了Uncaught Reference错误!我错过了什么/或做错了????
这是logcat错误的外观 -
I/chromium: [INFO:CONSOLE(243)] "Uncaught ReferenceError: Android is not defined", source: ..
更新1:
在参考以下SO答案后: 1. Can a java file have more than one class? 2. Android 4.2.1, WebView and javascript interface breaks
我创建了一个名为WebAppInterface的新Java类,并将公共类从此代码段(在我的主类中)转移到WebAppInterface.java类中。
我还将我的最低APK版本更改为17.
仍面临同样的问题。任何帮助,将不胜感激。