Android: как загрузить локальный файл JavaScript в WebView

Я пытаюсь написать программу, которая делает простой toast, Когда я попытался добавить скрипт в HTMLсработало и могу увидеть toast, Но когда я поместил то же самое script код в отдельном файле под assert папку (script.js), он не может внедрить javascript,

Я поддерживаю API 15 и выше.

Вот код, где я пытаюсь ввести script,

    myWebView = (WebView) findViewById(R.id.webviewid);

    myWebView.loadDataWithBaseURL("file:///android_asset/",
            "<html>" +
            "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">" +
            "<style type=\"text/css\">\n" +
            "@font-face {\n" +
            "    font-family: MyFont;\n" +
            "    src: url(\"file:///android_asset/fonts/myfont.ttf\")\n" +
            "}\n" +
            "body {\n" +
            "    font-family: MyFont;\n" +
            "    font-size: medium;\n" +
            "    text-align: justify;\n" +
            "}\n" +
            "</style>" +
            "</head>" +
            "<body>" +
            "<input type=\"button\" value=\"Say hello\" onClick=\"showAndroidToast('Hello Android!')\" />" +
            "<script type=\"text/javascript\" src=\"file:///android_asset/www/js/script.js\"/>" +
            "</body>" +
            "</html>", "text/html", "UTF-8", null);
    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");
    myWebView.setWebViewClient(new MyWebViewClient());

Вот мой javascript код. (script.js)

    function showAndroidToast(toast) {
        Android.showToast(toast);
    };

Вот мой Javascript Интерфейс:

    protected 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();
        }
    }

Как я могу ввести javascript файл? Любая помощь приветствуется.

Моя структура проекта выглядит следующим образом:

    ---
      |
      ---- App
           |
           -----src
                |
                -----main
                     |
                     ------asserts
                     |     |
                     |     ------fonts
                     |     |
                     |     ------www
                     |     |     |
                     |     |     ------js
                     |     |           |
                     |     |           ------script.js
                     |
                     ------java
                     |
                     ------res

Журнал кота показывает:

 E/Web Console﹕ Uncaught ReferenceError: showAndroidToast is not defined:13

1 ответ

Я следовал примеру, приведенному на этом сайте, и он работал.

Ссылка на сайт

Поскольку вы используете WebView для отображения данных, вы можете загрузить их на сервер или даже в Dropbox, а затем подключить их с помощью импорта URL?

Другие вопросы по тегам