mirror of
https://gitee.com/shuto/cordova-plugin-file-opener2.git
synced 2025-01-31 03:52:51 +08:00
Initial commit
This commit is contained in:
parent
e0dfddcf3a
commit
bfb6437405
31
.gitignore
vendored
31
.gitignore
vendored
@ -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
|
||||
|
2
LICENSE
2
LICENSE
@ -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
|
||||
|
47
README.md
47
README.md
@ -1,4 +1,43 @@
|
||||
cordova-plugin-file-opener2
|
||||
===========================
|
||||
|
||||
A File Opener Plugin for Cordova
|
||||
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
31
plugin.xml
Normal 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>
|
@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
11
www/plugins.FileOpener2.js
Normal file
11
www/plugins.FileOpener2.js
Normal 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;
|
Loading…
Reference in New Issue
Block a user