Android WebView问题 - 未捕获的ReferenceError:'字符串'未定义

时间:2017-01-01 18:22:45

标签: javascript java android angularjs webview

我知道已经问过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.

仍面临同样的问题。任何帮助,将不胜感激。

0 个答案:

没有答案