我正在创建一个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/");
答案 0 :(得分:1)
确定,
因此,事实证明,对于任何来自KitKat的东西,它都很简单:
wv.evaluateJavascript("fromAndroid()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
textView.setText(value);
我在理解上的差距是我试图直接访问javascript变量,但这不是evaluateJavascript正在做的事情。看起来它实际上在这个例子中运行了所选的javascript函数fromAndroid()
,并且返回的任何内容都作为变量存储在本机应用程序中。
以下是我的javascript代码,有助于:
<script>
function fromAndroid(){
return "{% if user.is_authenticated %}true{% else %}false{% endif %} 1 0";
}
</script>
很高兴由专家创建,但我希望这有助于将来的某个人。