Initial commit

This commit is contained in:
pwlin 2014-02-10 12:42:31 +01:00
parent e0dfddcf3a
commit bfb6437405
6 changed files with 204 additions and 32 deletions

31
.gitignore vendored
View File

@ -1,29 +1,6 @@
# built application files
*.apk
*.ap_
# files for the dex VM
*.dex
# Java class files
*.class
# generated files
bin/
gen/
# Local configuration file (sdk path, etc)
local.properties
# Eclipse project files
.classpath
.project
# Proguard folder generated by Eclipse
proguard/
# Intellij project files
*.iml
*.ipr
*.iws
.idea/
# Package Files #
*.jar
*.war
*.ear

View File

@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014 pwlin
Copyright (c) 2013 pwlin
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in

View File

@ -1,4 +1,43 @@
cordova-plugin-file-opener2
===========================
A File Opener Plugin for Cordova
==========================
This plugin will open a file on your device file system with its default application.
Requirements
-------------
- Android
- Cordova 3.0 or higher
Installation
-------------
cordova plugin add [url-of-the-git-repo]
Usage
------
Open an APK install dialog:
<script>
cordova.plugins.fileOpener2.open(
'/sdcard/Download/gmail.apk',
'application/vnd.android.package-archive'
);
</script>
Open a PDF document with the default PDF reader and optional callback object:
<script>
cordova.plugins.fileOpener2.open(
'/sdcard/Download/starwars.pdf',
'application/pdf',
{
error : function(errorObj) {
alert('Error status: ' + errorObj.status + ' - Error message: ' + errorObj.message);
},
success : function () {
alert('file opened successfully');
}
}
);
</script>
__Please Note that for properly opening a PDF file, you must already have a PDF reader (Acrobat Reader, Foxit Mobile PDF, etc. ) installed on your mobile device. Otherwise this will not work.__

31
plugin.xml Normal file
View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?><plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="io.github.pwlin.cordova.plugins.fileopener2"
version="1.0.3">
<name>File Opener2</name>
<description>A File Opener Plugin for Cordova.</description>
<license>MIT</license>
<engines>
<engine name="cordova" version=">=3.0.0" />
</engines>
<js-module src="www/plugins.FileOpener2.js" name="FileOpener2">
<clobbers target="cordova.plugins.fileOpener2" />
</js-module>
<!-- android -->
<platform name="android">
<source-file src="src/android/io/github/pwlin/cordova/plugins/fileopener2/FileOpener.java" target-dir="src/io/github/pwlin/cordova/plugins/fileopener2" />
<config-file target="res/xml/config.xml" parent="/*">
<feature name="FileOpener2">
<param name="android-package" value="io.github.pwlin.cordova.plugins.fileopener2.FileOpener2" />
</feature>
</config-file>
</platform>
<platform name="ios">
</platform>
</plugin>

View File

@ -0,0 +1,114 @@
package io.github.pwlin.cordova.plugins.fileopener2;
import java.io.File;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Intent;
import android.net.Uri;
//import android.util.Log;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.PluginResult;
public class FileOpener2 extends CordovaPlugin {
/**
* Executes the request and returns a boolean.
*
* @param action
* The action to execute.
* @param args
* JSONArry of arguments for the plugin.
* @param callbackContext
* The callback context used when calling back into JavaScript.
* @return boolean.
*/
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("open")) {
try {
return this._open(args.getString(0), args.getString(1), callbackContext);
} catch (JSONException e) {
JSONObject errorObj = new JSONObject();
errorObj.put("status", PluginResult.Status.JSON_EXCEPTION.ordinal());
errorObj.put("message", e.getMessage());
callbackContext.error(errorObj);
return false;
}
} else {
JSONObject errorObj = new JSONObject();
errorObj.put("status", PluginResult.Status.INVALID_ACTION.ordinal());
errorObj.put("message", "Invalid action");
callbackContext.error(errorObj);
return false;
}
}
/**
* Identifies if action to be executed returns a value and should be run
* synchronously.
*
* @param action
* The action to execute
* @return T=returns value
*/
public boolean isSynch(String action) {
return false;
}
/**
* Called by AccelBroker when listener is to be shut down. Stop listener.
*/
public void onDestroy() {
}
private boolean _open(String fileName, String contentType, CallbackContext callbackContext) throws JSONException {
File file = new File(fileName);
if (file.exists()) {
try {
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, contentType);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
/*
* @see http://stackoverflow.com/questions/14321376/open-an-activity-from-a-cordovaplugin
*/
cordova.getActivity().startActivity(intent);
callbackContext.success();
return true;
} catch (android.content.ActivityNotFoundException e) {
JSONObject errorObj = new JSONObject();
errorObj.put("status", PluginResult.Status.ERROR.ordinal());
errorObj.put("message", "Activity not found: " + e.getMessage());
callbackContext.error(errorObj);
return false;
}
} else {
JSONObject errorObj = new JSONObject();
errorObj.put("status", PluginResult.Status.ERROR.ordinal());
errorObj.put("message", "File not found");
callbackContext.error(errorObj);
return false;
}
}
}

View File

@ -0,0 +1,11 @@
var exec = require("cordova/exec");
function FileOpener2() {};
FileOpener2.prototype.open = function(fileName, contentType, callbackContext) {
callbackContext = callbackContext || {};
exec(callbackContext.success || null, callbackContext.error || null, "FileOpener2", "open", [fileName, contentType]);
};
var fileOpener2 = new FileOpener2();
module.exports = fileOpener2;