Это довольно просто, когда HTML является вашим собственным.Есть несколько способов, я дам вам 2 из них.
Простой способ использования GET
Идея состоит в том, чтобы отправить местоположение в URL (вам может понадобиться некоторая кодировка, но до тех пор, покаэто только цифры и без пробелов, все в порядке
Некоторые изменения для вашего shouldOverridUrlLoading
public boolean shouldOverrideUrlLoading(WebView view, String url){
if (url.needs_geo) //meaning if this is the url that needs the geo location
url += "?geo=" + your_location;
view.loadUrl(url);
return true;
}
В вашем JavaScript:
function getParam(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
затем
var geo_location = getParam('geo');
Использование WebView.addJavascriptInterface
(я никогда не пытался передавать значения из Java в JavaScript, но, вероятно, также будет работать). Идея состоит в том, чтобы предоставить вашему JavaScript класс Java, к которому можно получить доступполучите параметры, которые вы хотите передать в JavaScript.
Внутри вашего класса Activity:
public String location; //as an example
public class SherifJS {
public String getLocation(){
return location;
}
}
//bla bla
SherifJS loc = new SherifJS();
yourWebView.addJavascriptInterface(loc, "locationProvider");
Внутри вашего JavaScript:
<script type="text/javascript">
<!--
function sherifJS() {
document.getElementById("locationHolder").innerHTML =
window.locationProvider.getLocation();
}
-->
</script>