Javascript Android WebView问题-未捕获引用错误:';字符串';没有定义
我知道已经有人问过了 但是,即使遵循了这里公认的答案(以及类似的其他问题),由于未捕获的引用错误,我也无法将客户端Android代码链接到JavaScript 我的Android代码片段-Javascript Android WebView问题-未捕获引用错误:';字符串';没有定义,javascript,java,android,angularjs,webview,Javascript,Java,Android,Angularjs,Webview,我知道已经有人问过了 但是,即使遵循了这里公认的答案(以及类似的其他问题),由于未捕获的引用错误,我也无法将客户端Android代码链接到JavaScript 我的Android代码片段- public class WebActivityExample extends Activity { WebView mWebView; WebAppInterface WAInterface; @Override public void onCreate(Bund
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按钮的角度模板视图)——
更新1:
参考以下SO答案后:
1.
2.
我创建了一个名为WebAppInterface的新Java类,并将公共类从这个代码片段(在我的主类中)转移到WebAppInterface.Java类中
我还将我的最低APK版本更改为17
仍然面临同样的问题。任何帮助都将不胜感激 这是什么?Javascript?id在哪里定义了“Android”?您需要包含一些JS文件吗?Android是这里定义的字符串-mWebView.addJavascriptInterface(WAInterface,“Android”);showToast是上面我的Java代码片段中@JavascriptInterface下面的函数。我遵循这个原则也是为了同样的目的。根据文档-不,我不需要包含任何JS文件,只需编写脚本,它应该将其绑定到我的Android功能。很抱歉在编写答案时感到困惑。这是一个WebView,以本机方式加载我的webapp,我已经看到很多答案和示例都在做同样的事情。。根据你的说法,为什么它不适用于我的用例?你注意到文档中的小“a”(新的WebAppInterface(this),“android”);”。名字不一样似乎很奇怪。你试过用一个小“a”吗?
<input type ="button" value="Say Hello!" onClick="showAndroidToast('Hello Android!')" />
<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>
I/chromium: [INFO:CONSOLE(243)] "Uncaught ReferenceError: Android is not defined", source: ..