Android Open Source - phonegap-lite-android App






From Project

Back to project page phonegap-lite-android.

License

The source code is released under:

MIT License

If you think the Android project phonegap-lite-android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * PhoneGap is available under *either* the terms of the modified BSD license *or* the
 * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
 * /*from w w  w . j a v  a 2  s .c om*/
 * Copyright (c) 2005-2010, Nitobi Software Inc.
 * Copyright (c) 2010-2011, IBM Corporation
 */
package com.phonegap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.phonegap.api.LOG;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
import java.util.HashMap;

/**
 * This class exposes methods in DroidGap that can be called from JavaScript.
 */
public class App extends Plugin {

    /**
     * Executes the request and returns PluginResult.
     *
     * @param action        The action to execute.
     * @param args          JSONArry of arguments for the plugin.
     * @param callbackId    The callback id used when calling back into JavaScript.
     * @return              A PluginResult object with a status and message.
     */
    public PluginResult execute(String action, JSONArray args, String callbackId) {
        PluginResult.Status status = PluginResult.Status.OK;
        String result = "";

        try {
          if (action.equals("clearCache")) {
            this.clearCache();
          }
          else if (action.equals("loadUrl")) {
              this.loadUrl(args.getString(0), args.optJSONObject(1));
            }
          else if (action.equals("cancelLoadUrl")) {
              this.cancelLoadUrl();
            }
          else if (action.equals("clearHistory")) {
              this.clearHistory();
            }
            else if (action.equals("backHistory")) {
                this.backHistory();
            }
          else if (action.equals("overrideBackbutton")) {
              this.overrideBackbutton(args.getBoolean(0));
            }
          else if (action.equals("isBackbuttonOverridden")) {
              boolean b = this.isBackbuttonOverridden();
              return new PluginResult(status, b);
            }
          else if (action.equals("exitApp")) {
              this.exitApp();
            }
          else if (action.equals("addWhiteListEntry")) {
            this.addWhiteListEntry(args.getString(0), args.optBoolean(1));
          }
            return new PluginResult(status, result);
        } catch (JSONException e) {
            return new PluginResult(PluginResult.Status.JSON_EXCEPTION);
        }
    }

    //--------------------------------------------------------------------------
    // LOCAL METHODS
    //--------------------------------------------------------------------------

  /**
   * Clear the resource cache.
   */
  public void clearCache() {
    ((DroidGap)this.ctx).clearCache();
  }
  
  /**
   * Load the url into the webview.
   * 
   * @param url
   * @param props      Properties that can be passed in to the DroidGap activity (i.e. loadingDialog, wait, ...)
   * @throws JSONException 
   */
  public void loadUrl(String url, JSONObject props) throws JSONException {
    LOG.d("App", "App.loadUrl("+url+","+props+")");
    int wait = 0;
    boolean openExternal = false;
    boolean clearHistory = false;

    // If there are properties, then set them on the Activity
    HashMap<String, Object> params = new HashMap<String, Object>();
    if (props != null) {
      JSONArray keys = props.names();
      for (int i=0; i<keys.length(); i++) {
        String key = keys.getString(i); 
        if (key.equals("wait")) {
          wait = props.getInt(key);
        }
        else if (key.equalsIgnoreCase("openexternal")) {
          openExternal = props.getBoolean(key);
        }
        else if (key.equalsIgnoreCase("clearhistory")) {
          clearHistory = props.getBoolean(key);
        }
        else {
          Object value = props.get(key);
          if (value == null) {

          }
          else if (value.getClass().equals(String.class)) {
            params.put(key, (String)value);
          }
          else if (value.getClass().equals(Boolean.class)) {
            params.put(key, (Boolean)value);
          }
          else if (value.getClass().equals(Integer.class)) {
            params.put(key, (Integer)value);
          }
        }
      }
    }

    // If wait property, then delay loading

    if (wait > 0) {
      try {
        synchronized(this) {
          this.wait(wait);
        }
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
    ((DroidGap)this.ctx).showWebPage(url, openExternal, clearHistory, params);
  }

  /**
   * Cancel loadUrl before it has been loaded.
   */
  public void cancelLoadUrl() {
    ((DroidGap)this.ctx).cancelLoadUrl();
  }
  
    /**
     * Clear page history for the app.
     */
    public void clearHistory() {
      ((DroidGap)this.ctx).clearHistory();
    }
    
    /**
     * Go to previous page displayed.
     * This is the same as pressing the backbutton on Android device.
     */
    public void backHistory() {
        ((DroidGap)this.ctx).backHistory();
    }

    /**
     * Override the default behavior of the Android back button.
     * If overridden, when the back button is pressed, the "backKeyDown" JavaScript event will be fired.
     * 
     * @param override    T=override, F=cancel override
     */
    public void overrideBackbutton(boolean override) {
      LOG.i("DroidGap", "WARNING: Back Button Default Behaviour will be overridden.  The backbutton event will be fired!");
      ((DroidGap)this.ctx).bound = override;
    }

    /**
     * Return whether the Android back button is overridden by the user.
     * 
     * @return boolean
     */
    public boolean isBackbuttonOverridden() {
      return ((DroidGap)this.ctx).bound;
    }

    /**
     * Exit the Android application.
     */
    public void exitApp() {
      ((DroidGap)this.ctx).endActivity();
    }

    /**
     * Add entry to approved list of URLs (whitelist)
     * 
     * @param origin    URL regular expression to allow
     * @param subdomains  T=include all subdomains under origin
     */
    public void addWhiteListEntry(String origin, boolean subdomains) {
      ((DroidGap)this.ctx).addWhiteListEntry(origin, subdomains);
    }
}




Java Source Code List

__ID__.Activity.java
com.phonegap.App.java
com.phonegap.CallbackServer.java
com.phonegap.Device.java
com.phonegap.DroidGap.java
com.phonegap.HttpHandler.java
com.phonegap.StandAlone.java
com.phonegap.TempListener.java
com.phonegap.WebViewReflect.java
com.phonegap.api.IPlugin.java
com.phonegap.api.LOG.java
com.phonegap.api.PhonegapActivity.java
com.phonegap.api.PluginManager.java
com.phonegap.api.PluginResult.java
com.phonegap.api.Plugin.java
com.phonegap.file.EncodingException.java
com.phonegap.plugin.sqlitePlugin.SQLitePlugin.java