Вы можете спросить, зачем нам использовать javascript внутри Android? Представьте себе ситуацию, когда мы ищем конкретную функциональность, но для этого не реализована библиотека Android. Однако для этого у нас есть JS-библиотека. Например, нужно ли добавить в Android библиотеку типа Jsonlogic ?? Как бы Вы это сделали?

Для этого есть удобный способ - выполнить функцию Js с помощью Android. Но только логический код. Мы не можем делать какие-либо изменения пользовательского интерфейса (насколько я знаю) с помощью этих библиотек.

Библиотека, которую мы используем для выполнения JS, называется Rhino. Вы можете скачать последнюю версию здесь.

После загрузки библиотеки распакуйте папку, скопируйте файл js.jar и вставьте банку в папку libs внутри папки приложения в проекте Android. Затем щелкните правой кнопкой мыши файл js.jar и выберите «Добавить как библиотеку». Если «Добавить как библиотеку» не отображается, откройте градиент уровня приложения и добавьте следующий код.

implementation files('./libs/js.jar')

Затем нам нужно создать файл свойств, чтобы добавить код нашей JS-функции. Для этого щелкните правой кнопкой мыши папку res и «Создать» - ›каталог ресурсов Android и выберите каталог« Raw ». Внутри каталога raw создайте файл с именем config.properties. Внутри добавьте такое значение свойства.

jsExecute=var getRhinoHello=function(){return "hello rhino"}

Затем откройте класс или действие и добавьте следующую функцию.

Позвольте мне объяснить, что происходит внутри этой функции.

  • Строка кода 5–10 - здесь я загружаю файл свойств в исходную папку.
  • Строка кода 12 - Здесь мы получаем значение свойства. Внутри файлов config.properties мы определяем имя свойства как «jsExecute». Поэтому нам нужно использовать одно и то же имя.
  • Строка кода 13 - в этой строке мы определяем, какую функцию нужно вызвать. Оно должно совпадать с именем функции внутри config.properties. В этом примере мы определяем имя функции как «getRhinoHello» внутри config.properties, и здесь мы должны использовать это имя функции.
  • Строка кода 37–41 - здесь. Она выполнит функцию JS и вернет значение.

Надеюсь, вы получите представление о функции. Затем мы можем вызвать эту функцию таким образом и увидеть результат внутри logcat.

Log.d("Rhino", "onCreate: "+ runScript(this));

Он напечатает «hello rhino» внутри вывода logcat.

Если мы хотим передать параметр функции JS, мы можем добавить эти значения в массив functionParams следующим образом.

Object[] functionParams = new Object[]{"cool"};

Затем нам нужно изменить функцию JS, чтобы она принимала параметры.

jsExecute=var getRhinoHello=function(param){return "hello rhino "+param}

Я надеюсь, что вы лучше поймете, как выполнять JS-функцию в приложении для Android. Я надеюсь, что в будущих статьях я расскажу больше о производительности и о том, как использовать с реальной библиотекой.

Счастливый Android. 😄✌️

Это обучающее видео - https://youtu.be/qeiN2Xd-Dlw