2018-12-20 20:04:56 +08:00
# A File Opener Plugin for Cordova (The Original Version)
2018-12-12 20:31:21 +08:00
2018-12-20 20:04:56 +08:00
[![Latest Stable Version ](https://img.shields.io/npm/v/cordova-plugin-file-opener2.svg )](https://www.npmjs.com/package/cordova-plugin-file-opener2) [![Total Downloads ](https://img.shields.io/npm/dt/cordova-plugin-file-opener2.svg )](https://npm-stat.com/charts.html?package=cordova-plugin-file-opener2) [![Build Status ](https://travis-ci.org/apache/cordova-plugin-file-opener2.svg?branch=master )](https://travis-ci.org/apache/cordova-plugin-file-opener2)
2018-12-12 20:31:21 +08:00
2018-12-20 20:04:56 +08:00
This plugin will open a file on your device file system with its default application.
2018-12-12 20:31:21 +08:00
2018-12-20 20:04:56 +08:00
```js
cordova.plugins.fileOpener2.open(
filePath,
fileMIMEType,
{
error : function(){ },
success : function(){ }
}
);
```
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
## Installation
2018-12-14 22:34:11 +08:00
2018-12-12 02:06:25 +08:00
```shell
$ cordova plugin add cordova-plugin-file-opener2
2018-12-14 22:34:11 +08:00
```
From release `2.1.0` you can also set the android support version
```shell
2018-12-20 20:04:56 +08:00
$ cordova plugin add cordova-plugin-file-opener2 --variable ANDROID_SUPPORT_V4_VERSION={required version}
2018-12-12 02:06:25 +08:00
```
2018-12-20 20:04:56 +08:00
## Requirements
The following platforms and versions are supported by the latest release:
- Android 4.4+ / iOS 9+ / WP8 / Windows
- Cordova CLI 7.0 or higher
2018-12-14 22:34:11 +08:00
2018-12-20 20:04:56 +08:00
Cordova CLI 6.0 is supported by 2.0.19, but there are a number of issues, particularly with Android builds (see [232 ](https://github.com/pwlin/cordova-plugin-file-opener2/issues/232 ) [203 ](https://github.com/pwlin/cordova-plugin-file-opener2/issues/203 ) [207 ](https://github.com/pwlin/cordova-plugin-file-opener2/issues/207 )). Using the [cordova-android-support-gradle-release ](https://github.com/dpa99c/cordova-android-support-gradle-release ) plugin may help.
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
## fileOpener2.open(filePath, mimeType, options)
Opens a file
### Supported Platforms
- Android 4.4+
- iOS 9+
- Windows
- WP8
### Quick Examples
2015-09-24 02:02:24 +08:00
Open an APK install dialog:
2018-12-12 02:06:25 +08:00
```javascript
cordova.plugins.fileOpener2.open(
'/sdcard/Download/gmail.apk',
'application/vnd.android.package-archive'
);
```
Open a PDF document with the default PDF reader and optional callback object:
2018-12-20 20:04:56 +08:00
```js
2018-12-12 02:06:25 +08:00
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');
}
}
);
```
2018-12-20 20:04:56 +08:00
### Market place installation
Install From Market: to install an APK from a market place, such as Google Play or the App Store, you can use an `<a>` tag in combination with the `market://` protocol:
```html
< a href = "market://details?id=xxxx" target = "_system" > Install from Google Play< / a >
< a href = "itms-apps://itunes.apple.com/app/my-app/idxxxxxxxx?mt=8" target = "_system" > Install from App Store< / a >
```
or in code:
```js
window.open("[market:// or itms-apps:// link]","_system");
```
## fileOpener2.showOpenWithDialog(filePath, mimeType, options)
Opens with system modal to open file with an already installed app.
### Supported Platforms
- Android 4.4+
- iOS 9+
### Quick Example
```js
2018-12-12 02:06:25 +08:00
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');
2015-09-24 02:02:24 +08:00
}
2018-12-12 02:06:25 +08:00
}
);
```
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
## fileOpener2.uninstall(packageId, callbackContext)
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
Uninstall a package with its ID
2015-10-01 18:08:37 +08:00
2018-12-20 20:04:56 +08:00
### Supported Platforms
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
- Android 4.4+
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
### Quick Example
```js
2018-12-12 02:06:25 +08:00
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.');
}
});
```
2018-12-20 20:04:56 +08:00
## fileOpener2.appIsInstalled(packageId, callbackContext)
2018-12-12 02:06:25 +08:00
Check if an app is already installed.
2018-12-20 20:04:56 +08:00
### Supported Platforms
- Android 4.4+
### Quick Example
2018-12-12 02:06:25 +08:00
```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.')
2015-09-24 02:02:24 +08:00
}
2018-12-12 02:06:25 +08:00
}
});
```
2018-12-20 20:04:56 +08:00
2018-12-12 02:06:25 +08:00
---
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
## Notes
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
- 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.
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
- [It is reported ](https://github.com/pwlin/cordova-plugin-file-opener2/issues/2#issuecomment-41295793 ) that in iOS, you might need to remove `<preference name="iosPersistentFileLocation" value="Library" />` from your `config.xml`
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
- 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 )
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
---
## Android APK installation limitation
2015-09-24 02:02:24 +08:00
2018-12-20 20:04:56 +08:00
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
< platform name = "android" >
< config-file parent = "/manifest" target = "AndroidManifest.xml" xmlns:android = "http://schemas.android.com/apk/res/android" >
< uses-permission android:name = "android.permission.REQUEST_INSTALL_PACKAGES" / >
< / config-file >
< / platform >
```
- 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.
2015-09-24 02:02:24 +08:00