似乎无法进入android webview中的geolocation html5 API

时间:2014-12-04 22:41:46

标签: javascript android html5 webview

我对android编程很新。 我试图获取当前位置并在html页面上显示坐标。 我知道同样的问题有很多答案,但无论我做什么,地理定位API的成功或错误功能都不会被执行。 如果你们中的任何人都可以查看我的代码并告诉我哪些错误会给你带来很大的帮助。 我不确定这是否是问题但是得到了

           disableGcForExternalAlloc== false in the logcat.

尝试重新启动设备,清除缓存,但一切都是徒劳的

这是我的代码

主要活动

    package com.sys.demomap;
    import android.os.Bundle;
    import android.app.Activity;
    import android.text.InputFilter.LengthFilter;
    import android.view.Menu;
    import android.webkit.WebChromeClient;
    import android.webkit.WebView;
    import android.widget.Toast;
    import android.webkit.GeolocationPermissions;
    import android.webkit.GeolocationPermissions.Callback;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    WebView view;
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    view = (WebView) findViewById(R.id.webView1);
    view.getSettings().setJavaScriptEnabled(true);
    view.getSettings().setGeolocationEnabled(true);
    view.getSettings().setDomStorageEnabled(true);
    view.getSettings().setAppCacheEnabled(true);
    view.getSettings().setDatabaseEnabled(true);
    view.setWebChromeClient(new WebChromeClient() {
        public void onGeoLocationPermissionsShowPrompt(String origin,
                GeolocationPermissions.Callback callback) {
            callback.invoke(origin, true, false);
        }
    });
    view.getSettings().setGeolocationDatabasePath(getFilesDir().getPath());
    view.loadUrl("file:///android_asset/mymaps.html");

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

webview中的javascript

    <script type="text/javascript">
    var watchID;
    function showLoc(position){
       alert("latitude :::::::::::"+position.coords.latitude);
       alert("longitude"+position.coords.longitude); 
    }

    function errorHandler(){
      alert("not working");
    }

    function getLocation()
    {
       console.log("into getlocation::::::::::::::::::::");

       if (navigator.geolocation)
       {
           alert(navigator.geolocation.getCurrentPosition);
           var options={maximumAge:600000, timeout:100000, enableHighAccuracy: true};
           navigator.geolocation.getCurrentPosition(showLoc,errorHandler,options);

       }

    }


</script>  

0 个答案:

没有答案