我正在创建一个 Android 应用程序,我有以下 javascript,它位于从 webview 加载的“str8red.com”中:
<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/");
最佳答案
好的,
因此,事实证明,对于从 KitKat 向上的任何东西,它都非常简单:
wv.evaluateJavascript("fromAndroid()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
textView.setText(value);
我在理解上的差距是我试图直接访问 javascript 变量,但这不是 evaluateJavascript 正在做的事情。看起来它实际上运行了所选的 javascript 函数,在此示例中为 fromAndroid()
,并且返回的任何内容都作为变量存储在 native 应用程序中。
以下是我的 javascript 代码,以防有帮助:
<script>
function fromAndroid(){
return "{% if user.is_authenticated %}true{% else %}false{% endif %} 1 0";
}
</script>
很高兴由专家创建,但我希望这对将来的人有所帮助。
关于javascript - 安卓应用 : Pass Javascript Var to Native Java variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44472406/