android N surport

This commit is contained in:
inu1255
2018-04-29 17:14:54 +08:00
parent 3116a13cec
commit f3265fc2bd
3 changed files with 33 additions and 2 deletions

View File

@@ -20,8 +20,14 @@
<param name="android-package" value="com.lampa.startapp.startApp"/>
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/*/application">
<provider android:authorities="com.lampa.startapp.fileProvider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
</provider>
</config-file>
<source-file src="src/android/startApp.java" target-dir="src/com/lampa/startapp" />
<source-file src="src/android/res/xml/file_paths.xml" target-dir="res/xml" />
</platform>

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path path="Android/data/${applicationId}/" name="files_root" />
<external-path path="." name="external_storage_root" />
</paths>

View File

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