从Android代码更改功能值

时间:2012-06-12 05:21:05

标签: javascript jquery android cordova

我是Android开发人员,对JScript / Jquery / Phonegap等没有任何了解。我找到了一个例子,我用我的网页替换了它。在我的网页中,我有一个java脚本如下:

 <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">    </script>
<script type="text/javascript">var map;function initialize()
{
var mapDiv = document.getElementById('map-canvas');


map = new google.maps.Map(mapDiv, {center: new google.maps.LatLng(9.0000,-79.5000),zoom: 13,mapTypeId: google.maps.MapTypeId.SATELLITE});
google.maps.event.addListenerOnce(map, 'tilesloaded', addMarkers);}function addMarkers()
{
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var latLng = new google.maps.LatLng(9.0000,-79.5000);
var marker = new google.maps.Marker({position: latLng,map: map});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>

我想动态更改Lat-Long值使用我的android代码。请一些人指导我这样做。

这是在Web视图上加载html页面的android代码。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    mWebView = (WebView) findViewById(R.id.webview);
    mWebView.setWebViewClient(new NewsClient());
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setDomStorageEnabled(true);
    mWebView.loadUrl("file:///android_asset/www/map.html");
}

private class NewsClient extends WebViewClient {

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        System.out.println("URL: " + url);
        view.loadUrl("javascript:changeLocation('" + url + "')");
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

我有一个示例android应用程序,其中我使用测试插件作为网关将值从本机代码发送到Javascript插件并更新DOM值。

android-cordova-plugin

如果您熟悉phonegap插件,那么理解代码会更容易。我只是在Activity类中使用以下方法来更新html端。这里appcomm.updateValues()是我的网关插件方法,它从本机代码接收值而不启动来自Javascript的任何调用。

public void sendValue(String value1, String value2) {
        JSONObject data = new JSONObject();
        try {
            data.put("value1", value1);
            data.put("value2", value2);
        } catch (JSONException e) {
            Log.e("CommTest", e.getMessage());
        }
        String js = String.format("window.plugins.appcomm.updateValues('%s');",
                data.toString());
        this.sendJavascript(js);
    }