diff --git a/src/ios/FileOpener2.m b/src/ios/FileOpener2.m
index 6f238e4..4cc8cd0 100644
--- a/src/ios/FileOpener2.m
+++ b/src/ios/FileOpener2.m
@@ -34,22 +34,32 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     NSString *path = [[command.arguments objectAtIndex:0] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 	NSString *contentType = nil;
 	BOOL showPreview = YES;
+	BOOL useContentType = NO;
 
-	if([command.arguments count] == 2) { // Includes contentType
+	if([command.arguments count] >= 2) { // Includes contentType
 		contentType = [command.arguments objectAtIndex:1];
 	}
 
-	if ([command.arguments count] == 3) {
+	if ([command.arguments count] >= 3) {
 		showPreview = [[command.arguments objectAtIndex:2] boolValue];
 	}
 
+	if ([command.arguments count] >= 4) {
+		useContentType = [[command.arguments objectAtIndex:3] boolValue];
+	}
+
 	CDVViewController* cont = (CDVViewController*)[super viewController];
 	self.cdvViewController = cont;
+	NSString *uti = nil;
 
-	NSArray *dotParts = [path componentsSeparatedByString:@"."];
-	NSString *fileExt = [dotParts lastObject];
+	if(useContentType){
+		uti = (__bridge NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassMIMEType, (__bridge CFStringRef)contentType, NULL);
+	} else {
+		NSArray *dotParts = [path componentsSeparatedByString:@"."];
+		NSString *fileExt = [dotParts lastObject];
 
-	NSString *uti = (__bridge NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileExt, NULL);
+		uti = (__bridge NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)fileExt, NULL);
+	}
 
 	dispatch_async(dispatch_get_main_queue(), ^{
 		NSURL *fileURL = [NSURL URLWithString:path];
diff --git a/www/plugins.FileOpener2.js b/www/plugins.FileOpener2.js
index c5face4..eb75211 100644
--- a/www/plugins.FileOpener2.js
+++ b/www/plugins.FileOpener2.js
@@ -36,6 +36,12 @@ FileOpener2.prototype.showOpenWithDialog = function (fileName, contentType, call
     exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType, false]);
 };
 
+FileOpener2.prototype.openWithContentType = function (fileName, contentType, callbackContext) {
+    callbackContext = callbackContext || {};
+    if(typeof contentType !== "string"){ throw new Error("contentType must be a String") }
+    exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'open', [fileName, contentType, true, true]);
+};
+
 FileOpener2.prototype.uninstall = function (packageId, callbackContext) {
     callbackContext = callbackContext || {};
     exec(callbackContext.success || null, callbackContext.error || null, 'FileOpener2', 'uninstall', [packageId]);