Каковы допустимые возвращаемые значения для интерфейса Javascript в Android WebView? - PullRequest
25 голосов
/ 02 февраля 2012

У меня есть Android WebView, в котором есть JavaScript, который вызывает методы Android через метод addJavascriptInterface:

myWebview.addJavascriptInterface(new JavascriptBridge(), "Android");

public class JavascriptBridge {

    public String getAString() {          
        return "my_str";
    }
}

Это отлично работает. Я хочу вернуть список целых в WebView. Пробовал это:

public class JavascriptBridge {

    public int[] getMyInts() {          
        return new int[]{1,2,3};
    }
}

но вызов этой функции в JS возвращает undefined:

var myInts = Android.getMyInts();

Есть ли список допустимых типов возврата для интерфейса Javascript Android? Это только примитивы?

Ответы [ 2 ]

18 голосов
/ 01 марта 2012

Я не видел список допустимых типов (для передачи значений в функции Java и для возврата), но, похоже, работают только примитивы и строки.

Вы можете использовать JSON (например, stringify и анализировать в Javascript, проверить различные опции Java на json.org

8 голосов
/ 11 декабря 2012

Вы можете вернуть что угодно, примитивы или объекты. Объекты преобразуются в строки с помощью их метода toString (). Если метод JavascriptInterface возвращает строку JSON (например, объект, который toString () выводит JSON), вы можете затем проанализировать эту строку напрямую:

var array = JSON.parse(window.android.getSomeJsonThing());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...