Приложение для Android: передача Javascript Var в переменную Native Java

1

Я создаю приложение для Android, и у меня есть следующий javascript, который находится внутри "str8red.com", загруженного из webview:

<script>var name = "bob", age = 30;</script>

У меня есть текстовое поле, которое я могу установить с помощью:

textView.setText("Static Text")

Я хотел бы установить текстовое поле в переменную из javascript var name. Я попытался использовать webview.loadUrl("javascript:Android.getIds(Ids);"); и evaluateJavascript без успеха. Я также старался следовать многочисленным руководствам по переполнению стека и сети без успеха.

Ниже приведен код для загрузки webview:

wv = (WebView) findViewById(R.id.wv);
//Enable JavaScript
wv.getSettings().setJavaScriptEnabled(true);
wv.setFocusable(true);
wv.setFocusableInTouchMode(true);
//Set Render Priority To High
wv.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
wv.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
wv.getSettings().setDomStorageEnabled(true);
wv.getSettings().setDatabaseEnabled(true);
wv.getSettings().setAppCacheEnabled(true);
wv.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
//Load Url
wv.loadUrl("https://str8red.com/");
Теги:

1 ответ

0
Лучший ответ

В порядке,

Таким образом, получается, что для чего-либо из KitKat вверх это просто:

    wv.evaluateJavascript("fromAndroid()", new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String value) {
            textView.setText(value);

Мой пробел в понимании заключался в том, что я пытался получить доступ к javascript-переменным напрямую, но это не то, что делает оценка JavaScript. Похоже, что в этом примере на самом деле выполняется выбранная функция javascript, fromAndroid(), и все, что возвращается, сохраняется в собственном приложении как переменная.

Ниже мой javascript код incase помогает:

<script>
function fromAndroid(){
  return "{% if user.is_authenticated %}true{% else %}false{% endif %} 1 0";
}
</script>

Рад быть создан экспертом, но я надеюсь, что это может помочь кому-то в будущем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню