From f3265fc2bdb2b2bfa20351202e05c17745ecabf1 Mon Sep 17 00:00:00 2001
From: inu1255 <929909260@qq.com>
Date: Sun, 29 Apr 2018 17:14:54 +0800
Subject: [PATCH] android N surport
---
plugin.xml | 6 ++++++
src/android/res/xml/file_paths.xml | 5 +++++
src/android/startApp.java | 24 ++++++++++++++++++++++--
3 files changed, 33 insertions(+), 2 deletions(-)
create mode 100644 src/android/res/xml/file_paths.xml
diff --git a/plugin.xml b/plugin.xml
index 49b61a7..5a2c44d 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -20,8 +20,14 @@
+
+
+
+
+
+
diff --git a/src/android/res/xml/file_paths.xml b/src/android/res/xml/file_paths.xml
new file mode 100644
index 0000000..7b2b273
--- /dev/null
+++ b/src/android/res/xml/file_paths.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/src/android/startApp.java b/src/android/startApp.java
index 93a2a1a..2c59416 100644
--- a/src/android/startApp.java
+++ b/src/android/startApp.java
@@ -13,16 +13,21 @@ import org.json.JSONArray;
import org.json.JSONObject;
import org.json.JSONException;
-import android.content.Context;
import android.content.Intent;
import android.content.ComponentName;
import android.content.pm.PackageManager;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;
+
+import java.io.File;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.util.Iterator;
import android.net.Uri;
import java.lang.reflect.Field;
import android.content.ActivityNotFoundException;
+import android.os.Build;
+import android.support.v4.content.FileProvider;
import android.util.Log;
import android.os.Bundle;
@@ -152,7 +157,22 @@ public class startApp extends CordovaPlugin {
* http://developer.android.com/intl/ru/reference/android/content/Intent.html#setData%28android.net.Uri%29
*/
if(params.has("uri")) {
- LaunchIntent.setData(Uri.parse(params.getString("uri")));
+ String uri_str = params.getString("uri");
+ Uri uri = null;
+ if (uri_str.startsWith("file://")){
+ // android N surport
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ LaunchIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ try {
+ uri = FileProvider.getUriForFile(this.cordova.getContext(), "com.lampa.startapp.fileProvider", new File(new URI(uri_str)));
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
+ }
+ }
+ }else{
+ uri = Uri.parse(uri_str);
+ }
+ LaunchIntent.setData(uri);
}
/**