diff --git a/README.md b/README.md
index 4111eaa..9e9d980 100644
--- a/README.md
+++ b/README.md
@@ -1,170 +1,172 @@
-A File Opener Plugin for Cordova (The Original Version)
-==========================
-This plugin will open a file on your device file system with its default application.
-
-[![npm version](https://badge.fury.io/js/cordova-plugin-file-opener2.svg)](https://badge.fury.io/js/cordova-plugin-file-opener2)
-
-Requirements
--------------
-- Android 4 or higher / iOS 6 or higher / WP8
-- Cordova 3.0 or higher
-
-Installation
--------------
-```shell
-$ cordova plugin add cordova-plugin-file-opener2
-$ cordova plugin add cordova-plugin-file-opener2 --variable ANDROID_SUPPORT_VERSION={required version}
-```
-
-Usage
-------
-```javascript
-cordova.plugins.fileOpener2.open(
- filePath,
- fileMIMEType,
- {
- error : function(){ },
- success : function(){ }
- }
-);
-```
-
-Examples
---------
-Open an APK install dialog:
-
-```javascript
-cordova.plugins.fileOpener2.open(
- '/sdcard/Download/gmail.apk',
- 'application/vnd.android.package-archive'
-);
-```
-
-Install From Market: to install an APK from a market place, such as Google Play or the App Store, you can use an `` tag in combination with the `market://` protocol:
-
-```html
-Install from Google Play
-Install from App Store
-```
-
-or in code:
-```javascript
-window.open("[market:// or itms-apps:// link]","_system");
-```
-
-Open a PDF document with the default PDF reader and optional callback object:
-```javascript
-cordova.plugins.fileOpener2.open(
- '/sdcard/Download/starwars.pdf', // You can also use a Cordova-style file uri: cdvfile://localhost/persistent/Download/starwars.pdf
- 'application/pdf',
- {
- error : function(e) {
- console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
- },
- success : function () {
- console.log('file opened successfully');
- }
- }
-);
-```
-Open a system modal to open PDF document with one of the already installed app and optional callback object:
-```javascript
-cordova.plugins.fileOpener2.showOpenWithDialog(
- '/sdcard/Download/starwars.pdf', // You can also use a Cordova-style file uri: cdvfile://localhost/persistent/Download/starwars.pdf
- 'application/pdf',
- {
- error : function(e) {
- console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
- },
- success : function () {
- console.log('file opened successfully');
- }
- }
-);
-```
-
-Notes
-------
-
-- For properly opening _any_ file, you must already have a suitable reader for that particular file type installed on your device. Otherwise this will not work.
-
-- [It is reported](https://github.com/pwlin/cordova-plugin-file-opener2/issues/2#issuecomment-41295793) that in iOS, you might need to remove `` from your `config.xml`
-
-- If you are wondering what MIME-type should you pass as the second argument to `open` function, [here is a list of all known MIME-types](http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types?view=co)
-
-
-Android APK installation limitation
----
-The following limitations apply when opening an APK file for installation:
-- On Android 8+, your application must have the `ACTION_INSTALL_PACKAGE` permission. You can add it by adding this to your app's `config.xml` file:
-```xml
-
-
-
-
-
-```
-
-- Before Android 7, you can only install APKs from the "external" partition. For example, you can install from `cordova.file.externalDataDirectory`, but **not** from `cordova.file.dataDirectory`. Android 7+ does not have this limitation.
-
-Additional Android Functions
----
-The following functions are available in Android platform:
-
-`.uninstall(packageId, callbackContext)`
----
-Uninstall a package with its id.
-```javascript
-cordova.plugins.fileOpener2.uninstall('com.zynga.FarmVille2CountryEscape', {
- error : function(e) {
- console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
- },
- success : function() {
- console.log('Uninstall intent activity started.');
- }
-});
-```
-`.appIsInstalled(packageId, callbackContext)`
----
-Check if an app is already installed.
-```javascript
-cordova.plugins.fileOpener2.appIsInstalled('com.adobe.reader', {
- success : function(res) {
- if (res.status === 0) {
- console.log('Adobe Reader is not installed.');
- } else {
- console.log('Adobe Reader is installed.')
- }
- }
-});
-```
----
-
-Contributors
-------------
-[@Gillardo](https://github.com/Gillardo/), [@TankOs](https://github.com/TankOs), [@Rovi23](https://github.com/Rovi23), [@josemanuelbd](https://github.com/josemanuelbd), [@ielcoro](https://github.com/ielcoro), [@keturn](https://github.com/keturn), [@conform](https://github.com/conform), [@guyc](https://github.com/guyc), [@J3r0M3D3V](https://github.com/J3r0M3D3V), [@WuglyakBolgoink](https://github.com/WuglyakBolgoink), [@lincolnthree](https://github.com/lincolnthree), [@rocco](https://github.com/rocco/), [@FrankFenton](https://github.com/FrankFenton), [@MHolmes91](https://github.com/MHolmes91), [@souly1](https://github.com/souly1), [@diogodias86](https://github.com/diogodias86), [@Arxi](https://github.com/Arxi), [@vzharkov](https://github.com/vzharkov), [@lp1bp](https://github.com/lp1bp), [@stalniy](https://github.com/stalniy), [@liugogal](https://github.com/liugogal), [@lcaprini](https://github.com/lcaprini), [@jcdickman](https://github.com/jcdickman) [@shnist](https://github.com/shnist) [@Eeems](https://github.com/Eeems)
-
----
-
-LICENSE
---------
-The MIT License (MIT)
-
-Copyright (c) 2013 pwlin - pwlin05@gmail.com
-
-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
-the Software without restriction, including without limitation the rights to
-use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
-the Software, and to permit persons to whom the Software is furnished to do so,
-subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
-COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
-IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+A File Opener Plugin for Cordova (The Original Version)
+==========================
+This plugin will open a file on your device file system with its default application.
+
+[![npm version](https://badge.fury.io/js/cordova-plugin-file-opener2.svg)](https://badge.fury.io/js/cordova-plugin-file-opener2)
+
+Requirements
+-------------
+- Android 4 or higher / iOS 6 or higher / WP8
+- Cordova 3.0 or higher
+
+Installation
+-------------
+```shell
+$ cordova plugin add cordova-plugin-file-opener2
+$ cordova plugin add cordova-plugin-file-opener2 --variable ANDROID_SUPPORT_VERSION={required version}
+```
+
+Usage
+------
+```javascript
+cordova.plugins.fileOpener2.open(
+ filePath,
+ fileMIMEType,
+ {
+ error : function(){ },
+ success : function(){ },
+ position : [x, y]
+ }
+);
+```
+`position` array of coordinates from top-left device screen, use for iOS dialog positioning.
+
+Examples
+--------
+Open an APK install dialog:
+
+```javascript
+cordova.plugins.fileOpener2.open(
+ '/sdcard/Download/gmail.apk',
+ 'application/vnd.android.package-archive'
+);
+```
+
+Install From Market: to install an APK from a market place, such as Google Play or the App Store, you can use an `` tag in combination with the `market://` protocol:
+
+```html
+Install from Google Play
+Install from App Store
+```
+
+or in code:
+```javascript
+window.open("[market:// or itms-apps:// link]","_system");
+```
+
+Open a PDF document with the default PDF reader and optional callback object:
+```javascript
+cordova.plugins.fileOpener2.open(
+ '/sdcard/Download/starwars.pdf', // You can also use a Cordova-style file uri: cdvfile://localhost/persistent/Download/starwars.pdf
+ 'application/pdf',
+ {
+ error : function(e) {
+ console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
+ },
+ success : function () {
+ console.log('file opened successfully');
+ }
+ }
+);
+```
+Open a system modal to open PDF document with one of the already installed app and optional callback object:
+```javascript
+cordova.plugins.fileOpener2.showOpenWithDialog(
+ '/sdcard/Download/starwars.pdf', // You can also use a Cordova-style file uri: cdvfile://localhost/persistent/Download/starwars.pdf
+ 'application/pdf',
+ {
+ error : function(e) {
+ console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
+ },
+ success : function () {
+ console.log('file opened successfully');
+ }
+ }
+);
+```
+
+Notes
+------
+
+- For properly opening _any_ file, you must already have a suitable reader for that particular file type installed on your device. Otherwise this will not work.
+
+- [It is reported](https://github.com/pwlin/cordova-plugin-file-opener2/issues/2#issuecomment-41295793) that in iOS, you might need to remove `` from your `config.xml`
+
+- If you are wondering what MIME-type should you pass as the second argument to `open` function, [here is a list of all known MIME-types](http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/conf/mime.types?view=co)
+
+
+Android APK installation limitation
+---
+The following limitations apply when opening an APK file for installation:
+- On Android 8+, your application must have the `ACTION_INSTALL_PACKAGE` permission. You can add it by adding this to your app's `config.xml` file:
+```xml
+
+
+
+
+
+```
+
+- Before Android 7, you can only install APKs from the "external" partition. For example, you can install from `cordova.file.externalDataDirectory`, but **not** from `cordova.file.dataDirectory`. Android 7+ does not have this limitation.
+
+Additional Android Functions
+---
+The following functions are available in Android platform:
+
+`.uninstall(packageId, callbackContext)`
+---
+Uninstall a package with its id.
+```javascript
+cordova.plugins.fileOpener2.uninstall('com.zynga.FarmVille2CountryEscape', {
+ error : function(e) {
+ console.log('Error status: ' + e.status + ' - Error message: ' + e.message);
+ },
+ success : function() {
+ console.log('Uninstall intent activity started.');
+ }
+});
+```
+`.appIsInstalled(packageId, callbackContext)`
+---
+Check if an app is already installed.
+```javascript
+cordova.plugins.fileOpener2.appIsInstalled('com.adobe.reader', {
+ success : function(res) {
+ if (res.status === 0) {
+ console.log('Adobe Reader is not installed.');
+ } else {
+ console.log('Adobe Reader is installed.')
+ }
+ }
+});
+```
+---
+
+Contributors
+------------
+[@Gillardo](https://github.com/Gillardo/), [@TankOs](https://github.com/TankOs), [@Rovi23](https://github.com/Rovi23), [@josemanuelbd](https://github.com/josemanuelbd), [@ielcoro](https://github.com/ielcoro), [@keturn](https://github.com/keturn), [@conform](https://github.com/conform), [@guyc](https://github.com/guyc), [@J3r0M3D3V](https://github.com/J3r0M3D3V), [@WuglyakBolgoink](https://github.com/WuglyakBolgoink), [@lincolnthree](https://github.com/lincolnthree), [@rocco](https://github.com/rocco/), [@FrankFenton](https://github.com/FrankFenton), [@MHolmes91](https://github.com/MHolmes91), [@souly1](https://github.com/souly1), [@diogodias86](https://github.com/diogodias86), [@Arxi](https://github.com/Arxi), [@vzharkov](https://github.com/vzharkov), [@lp1bp](https://github.com/lp1bp), [@stalniy](https://github.com/stalniy), [@liugogal](https://github.com/liugogal), [@lcaprini](https://github.com/lcaprini), [@jcdickman](https://github.com/jcdickman) [@shnist](https://github.com/shnist) [@Eeems](https://github.com/Eeems)
+
+---
+
+LICENSE
+--------
+The MIT License (MIT)
+
+Copyright (c) 2013 pwlin - pwlin05@gmail.com
+
+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
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/src/ios/FileOpener2.m b/src/ios/FileOpener2.m
index 257a356..fdebf6c 100644
--- a/src/ios/FileOpener2.m
+++ b/src/ios/FileOpener2.m
@@ -38,6 +38,14 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
if ([command.arguments count] >= 3) {
showPreview = [[command.arguments objectAtIndex:2] boolValue];
}
+
+ CGRect rect;
+ if ([command.arguments count] >= 4) {
+ NSArray *positionValues = command.arguments[3];
+ rect = CGRectMake(0,0,[[positionValues objectAtIndex:0] floatValue],[[positionValues objectAtIndex:1] floatValue]);
+ } else {
+ rect = CGRectMake(0, 0, cont.view.bounds.size.width, cont.view.bounds.size.height);
+ }
CDVViewController* cont = (CDVViewController*)[super viewController];
self.cdvViewController = cont;
@@ -80,7 +88,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
wasOpened = [docController presentPreviewAnimated: NO];
} else {
CDVViewController* cont = self.cdvViewController;
- CGRect rect = CGRectMake(0, 0, cont.view.bounds.size.width, cont.view.bounds.size.height);
wasOpened = [docController presentOpenInMenuFromRect:rect inView:cont.view animated:YES];
}
diff --git a/www/plugins.FileOpener2.js b/www/plugins.FileOpener2.js
index ebe9313..7e064c4 100644
--- a/www/plugins.FileOpener2.js
+++ b/www/plugins.FileOpener2.js
@@ -26,10 +26,10 @@ var exec = require('cordova/exec');
function FileOpener2() {}
-FileOpener2.prototype.open = function (fileName, contentType, callbackContext) {
+FileOpener2.prototype.open = function (fileName, contentType, options) {
contentType = contentType || '';
- callbackContext = callbackContext || {};
- exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType]);
+ options = options || {};
+ exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType, false, options.position]);
};
FileOpener2.prototype.showOpenWithDialog = function (fileName, contentType, callbackContext) {