diff --git a/code/utils_misc.js b/code/utils_misc.js index b9af509d..41b42ee4 100644 --- a/code/utils_misc.js +++ b/code/utils_misc.js @@ -107,11 +107,15 @@ window.rangeLinkClick = function() { } window.showPortalPosLinks = function(lat, lng) { - var qrcode = '
'; - var script = ''; - var gmaps = 'gmaps'; - var osm = 'OSM'; - alert('
' + qrcode + script + gmaps + ' ' + osm + '
'); + if (android && android.intentPosLink) { + android.intentPosLink('https://maps.google.com/?q='+lat+','+lng); + } else { + var qrcode = '
'; + var script = ''; + var gmaps = 'gmaps'; + var osm = 'OSM'; + alert('
' + qrcode + script + gmaps + ' ' + osm + '
'); + } } window.reportPortalIssue = function(info) { diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index 8fa22ba1..6d553718 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -2,10 +2,10 @@ + android:versionName="0.2.1" > diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java b/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java new file mode 100644 index 00000000..50e33229 --- /dev/null +++ b/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java @@ -0,0 +1,25 @@ +package com.cradle.iitc_mobile; + +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.webkit.JavascriptInterface; + +// provide communication between IITC script and android app +public class IITC_JSInterface { + + // context of main activity + Context context; + + IITC_JSInterface(Context c) { + context = c; + } + + // send intent for gmaps link + @JavascriptInterface + public void intentPosLink(String s) { + Intent intent = new Intent(android.content.Intent.ACTION_VIEW, + Uri.parse(s)); + context.startActivity(intent); + } +} diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java index 745060fa..43b23a71 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java @@ -13,6 +13,7 @@ public class IITC_WebView extends WebView { private WebSettings settings; private IITC_WebViewClient webclient; + private IITC_JSInterface js_interface; // init web view private void iitc_init(Context c) { @@ -21,6 +22,8 @@ public class IITC_WebView extends WebView { settings.setDomStorageEnabled(true); settings.setAllowFileAccess(true); settings.setGeolocationEnabled(true); + this.js_interface = new IITC_JSInterface(c); + this.addJavascriptInterface(js_interface, "android"); // our webchromeclient should share geolocation with the iitc script // allow access by default @@ -59,4 +62,8 @@ public class IITC_WebView extends WebView { return this.webclient; } + public IITC_JSInterface getJSInterface() { + return this.js_interface; + } + }