Android, когда я иду в API> 19 мой интерфейс к Java дает мне «TypeError: Android.mthod не является функцией - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть min API как 16, и все работает, но отладка представляет собой серьезную проблему, поэтому после API 19 мы можем использовать отладчик Chrome, но здесь мои интерфейсы с кодом Java выдают ошибку «TypeError: Android.JavaMethod is не функция ", я использую это с angular для гибридного приложения, и оно работает очень хорошо, версия для iOS хорошо работает с отладчиком Safari, конечно же, тот же код требует доработки для запуска в Android, и мне нужен отладчик, чтобы понять это из. Что не так с этим?

Соответствующая ошибка

[INFO:CONSOLE(11594)] "TypeError: Android.JavaMethod is not a function
09-05 15:24:28.103: I/chromium(18021):     at myJavaMethod 
(file:///android_asset/my_angular/MyFile.js:217:18)
09-05 15:24:28.103: I/chromium(18021):     at Object.<anonymous> 
(file:///android_asset/my_angula/MyFile.js:901:67)
...

Мой файл JS

function myJavaMethod(curData)
{
  return(Android.JavaMethod(curData));   
} // --- end of myJavaMethod ---

... more code and then i call it from the angular controller
$scope.myCopy = myJavaMethod('arg');                
...

Мой Java-файл

weby1.setWebViewClient(new WebViewClient());
weby1.loadUrl("file:///android_asset/my_angular_hl/index.html");

// call to interface to android
weby1.addJavascriptInterface(new JavaScriptInterface(this), "Android");

...
public class JavaScriptInterface 
{
         Context mContext;
         JavaScriptInterface(Context c) {
             mContext = c;
         }

         public String JavaMethod(String arg)
         {
              ..stuff
              return str;
         }

         ... more methods

1 Ответ

0 голосов
/ 08 сентября 2018

Еще раз я отвечаю на свой собственный вопрос ... большую часть моих разработок делаю с angularJS и просто некоторыми низкоуровневыми вещами в Android (BT и тому подобное), поэтому я не стал поднимать уровень API после того, как копаясь немного больше, я обнаружил, что для API17 и выше вам нужно аннотировать каждый метод в интерфейсе, а также добавить импорт. Сообщение об ошибке полностью вводит в заблуждение и отправляет меня в никуда земли

import android.webkit.JavascriptInterface;
...   
@JavascriptInterface
public String JavaMethod(String arg)
{
 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...