Add a PhoneGap plug-in to the Hybrid Web Container.
<plugin name="DirectoryListPlugin" value="com.sybase.hwc.DirectoryListPlugin" />
/**
 * Example of Android PhoneGap Plugin
 */
package com.sybase.hwc;
import java.io.File;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
import com.phonegap.api.Plugin;
import com.phonegap.api.PluginResult;
import com.phonegap.api.PluginResult.Status;
/**
 * PhoneGap plugin which can be involved in following manner from javascript
 * <p>
 * result example - {"filename":"/sdcard","isdir":true,"children":[{"filename":"a.txt","isdir":false},{..}]}
 * </p>
 * <pre>
 * {@code
 * successCallback = function(result){
 *     //result is a json
 *  
 * }
 * failureCallback = function(error){
 *     //error is error message
 * }
 *	
 * window.plugins.DirectoryListing.list("/sdcard",
 *			                            successCallback
 *			                            failureCallback);
 *		                               
 * }
 * </pre>
 * @author Rohit Ghatol
 * 
 */
public class DirectoryListPlugin extends Plugin {
	/** List Action */
	public static final String ACTION="list";
	
	/*
	 * (non-Javadoc)
	 * 
	 * @see com.phonegap.api.Plugin#execute(java.lang.String,
	 * org.json.JSONArray, java.lang.String)
	 */
	@Override
	public PluginResult execute(String action, JSONArray data, String callbackId) {
		Log.d("DirectoryListPlugin", "Plugin Called");
		PluginResult result = null;
		if (ACTION.equals(action)) {
			try {
				String fileName = data.getString(0);
				JSONObject fileInfo = getDirectoryListing(new File(fileName));
				Log
						.d("DirectoryListPlugin", "Returning "
								+ fileInfo.toString());
				result = new PluginResult(Status.OK, fileInfo);
			} catch (JSONException jsonEx) {
				Log.d("DirectoryListPlugin", "Got JSON Exception "
						+ jsonEx.getMessage());
				result = new PluginResult(Status.JSON_EXCEPTION);
			}
		} else {
			result = new PluginResult(Status.INVALID_ACTION);
			Log.d("DirectoryListPlugin", "Invalid action : "+action+" passed");
		}
		return result;
	}
	/**
	 * Gets the Directory listing for file, in JSON format
	 * @param file The file for which we want to do directory listing
	 * @return JSONObject representation of directory list. e.g {"filename":"/sdcard","isdir":true,"children":[{"filename":"a.txt","isdir":false},{..}]}
	 * @throws JSONException
	 */
	private JSONObject getDirectoryListing(File file)
			throws JSONException {
		JSONObject fileInfo = new JSONObject();
		fileInfo.put("filename", file.getName());
		fileInfo.put("isdir", file.isDirectory());
		if (file.isDirectory()) {
			JSONArray children = new JSONArray();
			fileInfo.put("children", children);
			if (null != file.listFiles()) {
				for (File child : file.listFiles()) {
					children.put(getDirectoryListing(child));
				}
			}
		}
		return fileInfo;
	}
}
            /**
 *  
 * @return Instance of DirectoryListing
 */
var DirectoryListing = function() { 
}
/**
 * @param directory The directory for which we want the listing
 * @param successCallback The callback which will be called when directory listing is successful
 * @param failureCallback The callback which will be called when directory listing encouters an error
 */
DirectoryListing.prototype.list = function(directory,successCallback, failureCallback) {
	
    return PhoneGap.exec(successCallback,    //Callback which will be called when directory listing is successful
    					failureCallback,     //Callback which will be called when directory listing encounters an error
    					'DirectoryListPlugin',  //Telling PhoneGap that we want to run "DirectoryListing" Plugin
    					'list',              //Telling the plugin, which action we want to perform
    					[directory]);        //Passing a list of arguments to the plugin, in this case this is the directory path
};
/**
 * <ul>
 * <li>Register the Directory Listing Javascript plugin.</li>
 * <li>Also register native call which will be called when this plugin runs</li>
 * </ul>
 */
PhoneGap.addConstructor(function() {
	//Register the javascript plugin with PhoneGap
	PhoneGap.addPlugin('directorylisting', new DirectoryListing());
});
                  var directoryListingFunction = function()
{
	
		var dl = new DirectoryListing();
		
		function onSuccess(r)
		{
			var replace = document.getElementById('key2');
			if(replace)
			{
				var theHtml = "<html><head><title>A Title</title></head><body>Top level contents of sd card:<br/>";
				if(r.children)
				{
					var index = 0;
					for(index = 0; index <= r.children.length;index++)
					{
						if(r.children[index]){
							theHtml += r.children[index].filename + "<br/>";
						}
					}
				}
				else
				{
					alert("No r.children!!");
				}
				theHtml +="</body></html>";
				replace.innerHTML = theHtml;
			}
		}
		
		function onError(e)
		{
			alert( "Error: " + e );
		}
		
		var result = dl.list( "/sdcard", onSuccess, onError );
		
	}
	
	directoryListingFunction();