I am creating a WebView with code rather than loading via an XML layout. The webview appears to be created properly, but I am seeing the errors:
W/AwContents( 4564): nativeOnDraw failed; clearing to background color.
I/chromium( 4564): [INFO:CONSOLE(1)] "Uncaught ReferenceError: Android is not defined",
...
If I put the WebView in my XML layout, I don't get these errors. Notice that, if the script runs, it will change the onLoadEvent field value from "no" to "yes. That is happening, so evidently the script is running. It is not fetching the user name and password, though, indicating that "Android" is not defined.
I have also tried executing addView() before webView.loadData(); same errors.
Here's the code that creates the WebView:
@SuppressLint("SetJavaScriptEnabled")
private void onOk ()
{
Log.d ("RegTest", "onOk");
webView = new WebView (this);
webView.setLayoutParams (new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled (true);
CharSequence cs = readAsset ("input_form");
webView.loadData (cs.toString(), "text/html", "UTF-8");
contentView.addView (webView);
}
And here are snips of "input_form", which is the source for the WebView content:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
<script type="text/javascript">
function onLoadValues ()
{
document.getElementById ("onLoadEvent").value = "yes";
document.getElementById ("FullName").value = Android.getFullName();
document.getElementById ("EmailAddress").value = Android.getEmailAddr();
}
</script>
</head>
<body onload="onLoadValues()">
<form name="catwebformform52174" method="post" ...>
<fieldset>
<div class="pure-control-group">
<label for="onLoadValues">onLoadEvent</label>
<input id="onLoadEvent" name="onLoadEvent" type="text" placeholder="no">
</div>
<div class="pure-control-group">
<label for="FullName">Name</label>
<input id="FullName" name="FullName" type="text" placeholder="Name">
</div>
<div class="pure-control-group">
<label for="EmailAddress">Email Address</label>
<input id="EmailAddress" name="EmailAddress" type="email" placeholder="Email Address">
</div>
</fieldset>
</form>
</body>
</html>