Java tutorial
/* * 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. * */ package de.cortex_media.phonegap.mediaviewer; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import org.json.JSONArray; import org.json.JSONException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaPlugin; import org.apache.cordova.PluginResult; public class MediaViewer extends CordovaPlugin { private static final String ASSETS = "file:///android_asset/"; @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { PluginResult.Status status = PluginResult.Status.OK; String result = ""; try { if (action.equals("viewMedia")) { viewMedia(args.getString(0), args.getString(1)); } else { status = PluginResult.Status.INVALID_ACTION; } callbackContext.sendPluginResult(new PluginResult(status, result)); } catch (JSONException e) { callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION)); } catch (IOException e) { callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.IO_EXCEPTION)); } return true; } private void viewMedia(String url, String type) throws IOException { Uri uri = Uri.parse(url); Intent intent = null; if (url.contains(ASSETS)) { String filepath = url.replace(ASSETS, ""); String filename = filepath.substring(filepath.lastIndexOf("/") + 1, filepath.length()); File fp = new File(this.cordova.getActivity().getFilesDir() + "/" + filename); if (!fp.exists()) { this.copy(filepath, filename); } uri = Uri.parse("file://" + this.cordova.getActivity().getFilesDir() + "/" + filename); intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, type); // use for type: // "video/*" // application/pdf } else { // Display video player intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(uri, type); } this.cordova.getActivity().startActivity(intent); } private void copy(String fileFrom, String fileTo) throws IOException { InputStream in = this.cordova.getActivity().getAssets().open(fileFrom); FileOutputStream out = this.cordova.getActivity().openFileOutput(fileTo, Context.MODE_WORLD_READABLE); byte[] buf = new byte[1024]; int len; while ((len = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); } }