Android, извлеките переменную javascript из веб-просмотра, используя интерфейс javascript - PullRequest
2 голосов
/ 03 апреля 2012

Как я могу извлечь эту переменную ниже с веб-сайта в мой код Android?Я думаю, что это должно работать с использованием интерфейса JavaScript, но как мне его получить?

<script type="text/javascript">
    var Ids = "[4161, 104, 121, 202, 1462]";
</script>

И я не могу изменить код на веб-сайте на метод, который возвращает значение.

Любойпредложения?

1 Ответ

8 голосов
/ 03 апреля 2012

Вы можете использовать схему javascript: в вызове webview.loadurl. Он выполнит JavaScript на странице веб-просмотра.

Оттуда вы можете заставить его вызывать функцию в вашем интерфейсе javascript.

webview.loadUrl("javascript:Android.getIds(Ids);");

Android - это пространство имен, используемое для объявления вашего интерфейса JavaScript.

//Add the javascript interface to your web view
this.addJavascriptInterface(new CustomJavaScriptInterface(webViewContext), "Android");

Помните, что javascriptinterface работает только с примитивными типами. Таким образом, вы на самом деле не можете передать массив напрямую. Просто используйте схему javascript, чтобы пройти через ваш массив. Я вижу, что это на самом деле не массив, так что вы должны быть в порядке с:

public class CustomJavaScriptInterface {
    Context mContext;

    /** Instantiate the interface and set the context */
    CustomJavaScriptInterface(Context c) {
        mContext = c;
    }


    /** retrieve the ids */
    public void getIds(final String myIds) {

        //Do somethings with the Ids

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...