在Android Kitkat中将javascript函数加载到webview

在Android Kitkat中将javascript函数加载到webview,javascript,android,webview,android-4.4-kitkat,Javascript,Android,Webview,Android 4.4 Kitkat,我在将外部文件中的javascript函数加载到Android Kitkat中的webview时遇到问题。对于早期版本,我的方法是实现我自己的webview客户端,并在我调用的方法onPageFinisned中实现 mWebView.loadUrl("javascript:" + functions); 后来,当我想调用一些js方法时,我调用了相同的代码,比如 mWebView.loadUrl("javascript:" + someFunction); 在android kitkat中有一

我在将外部文件中的javascript函数加载到Android Kitkat中的webview时遇到问题。对于早期版本,我的方法是实现我自己的webview客户端,并在我调用的方法onPageFinisned中实现

mWebView.loadUrl("javascript:" + functions);
后来,当我想调用一些js方法时,我调用了相同的代码,比如

mWebView.loadUrl("javascript:" + someFunction);
在android kitkat中有一个新方法evaluateJavascript,它用调用javascript函数来替换我的代码。我的问题是,现在这种方法和旧方法会抛出以下错误:

Uncaught ReferenceError: function is not defined

问题似乎在于将javascript函数加载到webview中,但我不知道如何以其他方式加载它。谢谢

对我有用的是在网页中的
标记中使用JavaScript函数:

<html>
<head>
<title>Android GeoWebTwo Demo</title>
<script language="javascript">
    function whereami(lat, lon) {
        document.getElementById("lat").innerHTML=lat;
        document.getElementById("lon").innerHTML=lon;
    }

    function pull() {
        var location=JSON.parse(locater.getLocation());

        whereami(location.lat, location.lon);
    }
</script>
</head>
<body>
<p>
You are at: <br/> <span id="lat">(unknown)</span> latitude and <br/>
<span id="lon">(unknown)</span> longitude.
</p>
<p><a onClick="pull()">Update Location</a></p>
</body>
</html>
(两个代码段都来自)


这适用于旧版本和新版本的Android。现在,在我的例子中,我的JavaScript恰好与DOM发生了冲突,所以我需要一个网页。您可能有一个空的
,网页正好提供JavaScript函数。

@commonware您对从包含注入JavaScript的url参数解析json值有何想法:
public void onLocationChanged(Location location) {
  StringBuilder buf=new StringBuilder("whereami(");

  buf.append(String.valueOf(location.getLatitude()));
  buf.append(",");
  buf.append(String.valueOf(location.getLongitude()));
  buf.append(")");

  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    browser.evaluateJavascript(buf.toString(), null);
  }
  else {
    browser.loadUrl("javascript:" + buf.toString());
  }
}