mirror of
https://gitee.com/shuto/cordova-plugin-file-opener2.git
synced 2025-01-31 12:02:49 +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
|
*.class
|
||||||
|
|
||||||
# generated files
|
# Package Files #
|
||||||
bin/
|
*.jar
|
||||||
gen/
|
*.war
|
||||||
|
*.ear
|
||||||
# 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/
|
|
||||||
|
2
LICENSE
2
LICENSE
@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
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
|
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
|
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
|
||||||
===========================
|
==========================
|
||||||
|
This plugin will open a file on your device file system with its default application.
|
||||||
A File Opener Plugin for Cordova
|
|
||||||
|
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