У меня есть проект Android Webview, которому необходимо получить доступ к некоторым функциям Javascript. Я настроил все по учебнику this. И все работает, я могу загрузить html из приложения Android, можно вызвать методы класса Android из Javascript в соответствии с методом, описанным в учебнике.Вызов функции Javascript с Android
Есть одна вещь, с которой я не могу работать, и это вызов функции Javascript из Java-класса в Android. Функция Javascript просто печатает сообщение журнала для теста.
В наш индекс.html входит sample.js. Вот sample.js файл:
(function() {
'use strict';
function init(event) {
function foo(){
console.log("javascript foo() function called from android");
}
}
window.addEventListener('load', init, false);
}());
function foo1(){
console.log("javascript foo1() function called from android");
}
И звонок из Java Webview:
myWebView.loadUrl("javascript:foo1()"); //this works
myWebView.loadUrl("javascript:foo()"); //this gives error
Как вы заметили, я создал 2 Foo функции в Javascript файлов и они размещены по-разному. Вызов foo1() работает, но вызов Foo() показывает эта ошибка в LogCat:
Uncaught ReferenceError: foo is not defined: Line 1 of file:///android_asset/index.html
Я подозреваю, что это потому, что Foo() внутри анонимной функции.
Может ли кто-нибудь показать мне, как я могу позвонить foo() из Android?
Спасибо.
Да, это исправлено. Благодарю. – kaushal