У меня проблемы с вызовом основных функций JavaScript из Android. Когда я клонировал репозиторий из этого урока , а затем сократил его, я смог заставить код работать правильно. Однако, когда я пытался создать свой собственный свежий проект, я потерпел неудачу.
Я сослался на следующие сообщения и, похоже, делаю то же самое, но безрезультатно. Между подходами нет заметных различий, поэтому я чувствую, что вне этих файлов могут быть зависимости, которые мне не хватает?
Функции вызова из Android в WebView
Запуск кода JavaScript в Webview
Мне интересно, не упускаю ли я что-нибудь тонкое.
По сути, я просто пытаюсь получить любой вывод на консоль, вызывая функцию JavaScript, которая определена в ее собственном файле.
Структура проекта выглядит следующим образом:
main
- assets
- index.html
- sketch.js
- java
- com.mypackage
- MainActivity.java
У меня есть файл sketch.js
со следующей функцией внутри
function hello() {
console.log("hello world");
}
И index.html
файл со следующим кодом
<!DOCTYPE html>
<html>
<head>
<script src="sketch.js" type="text/javascript"></script>
</head>
<body>
<canvas></canvas>
</body>
</html>
Тогда из моего класса активности у меня есть следующий код Java
webView = (WebView) findViewById(R.id.webView);
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/index.html");
webView.evaluateJavascript("javascript:hello();", null);
webView.evaluateJavascript("console.log('Hello world 2');", null);
В консоли в Android Studio вижу
[INFO:CONSOLE(1)] "Uncaught ReferenceError: hello is not defined", source: (1)
I/chromium: [INFO:CONSOLE(1)] "Hello world 2", source: (1)
Как я могу исправить этот код, чтобы можно было вызывать простую функцию JavaScript hello()
, которая находится в отдельном файле?