diff --git a/README.md b/README.md index 76a40234..cb0aedf9 100644 --- a/README.md +++ b/README.md @@ -156,7 +156,7 @@ the `cordova.file.*` properties map to physical paths on a real device. | Device Path | `cordova.file.*` | `AndroidExtraFileSystems` | r/w? | persistent? | OS clears | private | |:------------------------------------------------|:----------------------------|:--------------------------|:----:|:-----------:|:---------:|:-------:| | `file:///android_asset/` | applicationDirectory | assets | r | N/A | N/A | Yes | -| `/data/data//` | applicationStorageDirectory | - | r/w | N/A | N/A | Yes | +| `/Android/data//` | applicationStorageDirectory | - | r/w | N/A | N/A | Yes | |    `cache` | cacheDirectory | cache | r/w | Yes | Yes\* | Yes | |    `files` | dataDirectory | files | r/w | Yes | No | Yes | |       `Documents` | | documents | r/w | Yes | No | Yes | diff --git a/src/android/FileUtils.java b/src/android/FileUtils.java index 54225880..d8b0d980 100644 --- a/src/android/FileUtils.java +++ b/src/android/FileUtils.java @@ -575,6 +575,9 @@ private boolean needPermission(String nativeURL, int permissionType) throws JSON if (j.has("externalApplicationStorageDirectory")) { allowedStorageDirectories.add(j.getString("externalApplicationStorageDirectory")); } + ArrayList allowedExtraPatternStorageDirectories = new ArrayList(); + // basic pattern for usual application storage directory, to extend the allowed list to external SD cards for example + allowedExtraPatternStorageDirectories.add("/Android/data/" + cordova.getActivity().getPackageName() + "/"); if (permissionType == READ && hasReadPermission()) { return false; @@ -588,6 +591,11 @@ private boolean needPermission(String nativeURL, int permissionType) throws JSON return false; } } + for (String extraPatternDirectory : allowedExtraPatternStorageDirectories) { + if (nativeURL.contains(extraPatternDirectory)) { + return false; + } + } return true; }