package com.maginsoft.phonegap.plugin; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.PluginResult; import org.json.JSONArray; import org.json.JSONException; import com.orleonsoft.android.simplefilechooser.ui.FileChooserActivity; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.util.Log; public class FileChooser extends CordovaPlugin { private static final String TAG = "FileChooser"; private static final String ACTION_OPEN = "open"; private static final int PICK_FILE_REQUEST = 1; CallbackContext callback; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { if (action.equals(ACTION_OPEN)) { chooseFile(callbackContext); return true; } return false; } public void chooseFile(CallbackContext callbackContext) { // type and title should be configurable Context context=this.cordova.getActivity().getApplicationContext(); Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setClass(context,FileChooserActivity.class); Intent chooser = Intent.createChooser(intent, "Select File"); cordova.startActivityForResult(this, chooser, PICK_FILE_REQUEST); PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); pluginResult.setKeepCallback(true); callback = callbackContext; callbackContext.sendPluginResult(pluginResult); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PICK_FILE_REQUEST && callback != null) { if (resultCode == Activity.RESULT_OK) { Uri uri = data.getData(); if (uri != null) { Log.w(TAG, uri.toString()); callback.success(uri.toString()); } else { callback.error("File uri was null"); } } else if (resultCode == Activity.RESULT_CANCELED) { // TODO NO_RESULT or error callback? PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT); callback.sendPluginResult(pluginResult); } else { callback.error(resultCode); } } } }