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); } /**