Попытка вставить данные в функцию JS в WebView - PullRequest
3 голосов
/ 27 апреля 2011

Цель: я хотел бы взять строку JSON и передать ее в функцию JavaScript, которая находится в Android WebView.

Что я делаю: мне нужно получить данные из базы данных SQLite для Android, включитеэто в JSON, передать его в браузер и использовать диаграмму для отображения данных.Я выполнил все это, за исключением того, что не могу понять, как передать JSON в функцию JavaScript / в браузер.

Так что здесь у меня есть функция js в моем html-заголовке:

        <script type="text/javascript">
            function returnData(json) {
                 //Do something in here with the JSON String
            }
        </script>

И затем в моем Java у меня есть интерфейс javascript, который я буду вызывать для выполнения функции «returnData» JS.

final class DemoJavaScriptInterface {
        DemoJavaScriptInterface() {
        }

        public void clickOnAndroid() {
            mHandler.post(new Runnable() {
                public void run() {
                    json = "[{ country: \\\"USA\\\", visits: 4252 },{ country: \\\"China\\\", visits: 1882 },{ country: \\\"Japan\\\", visits: 1809 }]";
                    mWebView.loadUrl("javascript:returnData("+json+")");

                }
            });
        }
}

Теперь, если я ПРОСТО хочу выполнить функцию «returnData», она получаетисполнено просто отлично.(Работает ниже)

mWebView.loadUrl("javascript:returnData()");

Но если я попытаюсь вставить строку в функцию (как показано ниже), она просто «не справится» ... к сожалению, у меня нет большого опыта работы с JS, и поэтомуЯ понятия не имею, почему никогда не вызывается функция JS.

mWebView.loadUrl("javascript:returnData("+json+")");

Я ищу ЛЮБОЙ способ вставить данные в функцию скрипта Java, или где-нибудь в DOM я могу хранить данные (я полагаю)откуда функция JS может получать данные.

Любая помощь будет признательна, спасибо.

1 Ответ

4 голосов
/ 07 мая 2011

Мне нужно было добавить одинарные кавычки вокруг строки JSON.

mWebView.loadUrl("javascript:returnData('"+json+"')");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...