notify android when select spinner is opened/closed (fix for #255)

This commit is contained in:
Philipp Schaefer 2013-05-11 14:41:15 +02:00
parent 76aeafbfa5
commit 96add49516
4 changed files with 30 additions and 0 deletions

View File

@ -33,6 +33,13 @@ window.portalHighlighterControl = function() {
});
$("#portal_highlight_select").val(_current_highlighter);
$("#portal_highlight_select").change(function(){ changePortalHighlights($(this).val());});
// notify android that the select spinner is enabled.
// this disables javascript injection on android side.
// if android is not notified, the spinner closes on the next JS call
if (typeof android !== 'undefined' && android && android.spinnerEnabled) {
$("#portal_highlight_select").click(function(){ android.spinnerEnabled(true);});
$("#portal_highlight_select").focus(function(){ android.spinnerEnabled(false);});
}
$(".leaflet-top.leaflet-left").css('padding-top', '20px');
$(".leaflet-control-scale-line").css('margin-top','25px');
}

View File

@ -5,6 +5,7 @@ import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.widget.Toast;
@ -28,6 +29,14 @@ public class IITC_JSInterface {
context.startActivity(intent);
}
// disable javascript injection while spinner is enabled
// prevent the spinner from closing automatically
@JavascriptInterface
public void spinnerEnabled(boolean en) {
Log.d("iitcm", "disableJS? " + en);
((IITC_Mobile) context).getWebView().disableJS(en);
}
// copy link to specific portal to android clipboard
@JavascriptInterface
public void copy(String s) {

View File

@ -356,4 +356,8 @@ public class IITC_Mobile extends Activity {
attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN;
this.getWindow().setAttributes(attrs);
}
public IITC_WebView getWebView() {
return this.iitc_view;
}
}

View File

@ -19,6 +19,7 @@ public class IITC_WebView extends WebView {
private WebSettings settings;
private IITC_WebViewClient webclient;
private IITC_JSInterface js_interface;
private boolean disableJS = false;
// init web view
private void iitc_init(Context c) {
@ -85,6 +86,11 @@ public class IITC_WebView extends WebView {
return;
}
}
// do nothing if script is enabled;
if (this.disableJS == true) {
Log.d("iitcm", "javascript injection disabled...return");
return;
}
if (!url.startsWith("javascript:")) {
// force https if enabled in settings
SharedPreferences sharedPref = PreferenceManager
@ -123,4 +129,8 @@ public class IITC_WebView extends WebView {
return wifi.getState() == NetworkInfo.State.CONNECTED;
}
public void disableJS(boolean val) {
this.disableJS = val;
}
}