From c669853fba7f55a3474fab488669ecda1123feae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 02:24:45 -0300 Subject: [PATCH 1/6] add support to access android filesDir --- .../plugins/pathprovider/PathProviderPlugin.java | 15 +++++++++++++-- packages/path_provider/lib/path_provider.dart | 5 ++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java index ae432639f75a..b20aa309f36a 100644 --- a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java +++ b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java @@ -10,13 +10,14 @@ import io.flutter.plugin.common.MethodChannel.Result; import io.flutter.plugin.common.PluginRegistry.Registrar; import io.flutter.util.PathUtils; +import java.io.File; public class PathProviderPlugin implements MethodCallHandler { private final Registrar mRegistrar; public static void registerWith(Registrar registrar) { MethodChannel channel = - new MethodChannel(registrar.messenger(), "plugins.flutter.io/path_provider"); + new MethodChannel(registrar.messenger(), "plugins.flutter.io/path_provider"); PathProviderPlugin instance = new PathProviderPlugin(registrar); channel.setMethodCallHandler(instance); } @@ -37,6 +38,8 @@ public void onMethodCall(MethodCall call, Result result) { case "getStorageDirectory": result.success(getPathProviderStorageDirectory()); break; + case "getApplicationSupportDirectory": + result.success(getApplicationSupportDirectory()); default: result.notImplemented(); } @@ -46,11 +49,19 @@ private String getPathProviderTemporaryDirectory() { return mRegistrar.context().getCacheDir().getPath(); } + private String getApplicationSupportDirectory() { + return PathUtils.getFilesDir(mRegistrar.context()); + } + private String getPathProviderApplicationDocumentsDirectory() { return PathUtils.getDataDirectory(mRegistrar.context()); } private String getPathProviderStorageDirectory() { - return mRegistrar.context().getExternalFilesDir(null).getAbsolutePath(); + final File dir = mRegistrar.context().getExternalFilesDir(null); + if(dir == null){ + return null; + } + return dir.getAbsolutePath(); } } diff --git a/packages/path_provider/lib/path_provider.dart b/packages/path_provider/lib/path_provider.dart index 10755873c321..558b8aabc0f0 100644 --- a/packages/path_provider/lib/path_provider.dart +++ b/packages/path_provider/lib/path_provider.dart @@ -39,15 +39,14 @@ Future getTemporaryDirectory() async { /// On iOS, this uses the `NSApplicationSupportDirectory` API. /// If this directory does not exist, it is created automatically. /// -/// On Android, this function throws an [UnsupportedError]. +/// On Android, this function uses the `getFilesDir` API on the context. Future getApplicationSupportDirectory() async { - if (!Platform.isIOS) - throw UnsupportedError("getApplicationSupportDirectory requires iOS"); final String path = await _channel.invokeMethod('getApplicationSupportDirectory'); if (path == null) { return null; } + return Directory(path); } From 825ee0aafe31c398a2df808d62af1fb3d4fe5d4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 02:27:05 -0300 Subject: [PATCH 2/6] update pubspec.yaml and CHANGELOG.md --- packages/path_provider/CHANGELOG.md | 4 ++++ packages/path_provider/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/path_provider/CHANGELOG.md b/packages/path_provider/CHANGELOG.md index ea956fcc766f..dc87962ca87e 100644 --- a/packages/path_provider/CHANGELOG.md +++ b/packages/path_provider/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.2.0 + +* Android: `getApplicationSupportDirectory` enabled by using `getFilesDir`. + ## 1.1.2 * `getExternalStorageDirectory` now uses `getExternalFilesDir` on Android. diff --git a/packages/path_provider/pubspec.yaml b/packages/path_provider/pubspec.yaml index 96f248625b8a..2eed0ae7bd9d 100644 --- a/packages/path_provider/pubspec.yaml +++ b/packages/path_provider/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for getting commonly used locations on the Android & iOS file systems, such as the temp and app data directories. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/path_provider -version: 1.1.2 +version: 1.2.0 flutter: plugin: From d4e893d826f85fa6ed20caffdf85657a4a4c2cbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BAlio=20Cotta?= Date: Tue, 23 Jul 2019 02:34:23 -0300 Subject: [PATCH 3/6] fix formatting --- .../io/flutter/plugins/pathprovider/PathProviderPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java index b20aa309f36a..f8448cbc15d6 100644 --- a/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java +++ b/packages/path_provider/android/src/main/java/io/flutter/plugins/pathprovider/PathProviderPlugin.java @@ -17,7 +17,7 @@ public class PathProviderPlugin implements MethodCallHandler { public static void registerWith(Registrar registrar) { MethodChannel channel = - new MethodChannel(registrar.messenger(), "plugins.flutter.io/path_provider"); + new MethodChannel(registrar.messenger(), "plugins.flutter.io/path_provider"); PathProviderPlugin instance = new PathProviderPlugin(registrar); channel.setMethodCallHandler(instance); } @@ -59,7 +59,7 @@ private String getPathProviderApplicationDocumentsDirectory() { private String getPathProviderStorageDirectory() { final File dir = mRegistrar.context().getExternalFilesDir(null); - if(dir == null){ + if (dir == null) { return null; } return dir.getAbsolutePath(); From 26ae0cc6a1b76810102fadf257d9be4d3fb9c975 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Tue, 23 Jul 2019 08:05:38 -0700 Subject: [PATCH 4/6] Update CHANGELOG.md --- packages/path_provider/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/path_provider/CHANGELOG.md b/packages/path_provider/CHANGELOG.md index dc87962ca87e..90bc3d33002b 100644 --- a/packages/path_provider/CHANGELOG.md +++ b/packages/path_provider/CHANGELOG.md @@ -1,6 +1,7 @@ ## 1.2.0 -* Android: `getApplicationSupportDirectory` enabled by using `getFilesDir`. +* On Android, `getApplicationSupportDirectory` is now supported and uses `getFilesDir`. +* `getStorageDirectory` now returns `null` instead of throwing an exception if no external files directory is available. ## 1.1.2 From 981396a5c0fed3399c4a7e9f8cc0b80d3fbbfcfa Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Tue, 23 Jul 2019 08:09:55 -0700 Subject: [PATCH 5/6] Update path_provider.dart --- packages/path_provider/lib/path_provider.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/path_provider/lib/path_provider.dart b/packages/path_provider/lib/path_provider.dart index 558b8aabc0f0..f834566cd71e 100644 --- a/packages/path_provider/lib/path_provider.dart +++ b/packages/path_provider/lib/path_provider.dart @@ -57,7 +57,7 @@ Future getApplicationSupportDirectory() async { /// [getApplicationSupportDirectory] instead if the data is not user-generated. /// /// On Android, this uses the `getDataDirectory` API on the context. Consider -/// using getExternalStorageDirectory instead if data is intended to be visible +/// using [getExternalStorageDirectory] instead if data is intended to be visible /// to the user. Future getApplicationDocumentsDirectory() async { final String path = From bc3bc3974f3a66368040b96e08807dbe1a17573b Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Tue, 23 Jul 2019 08:10:30 -0700 Subject: [PATCH 6/6] Update CHANGELOG.md --- packages/path_provider/CHANGELOG.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/path_provider/CHANGELOG.md b/packages/path_provider/CHANGELOG.md index 90bc3d33002b..2e7f5ad33464 100644 --- a/packages/path_provider/CHANGELOG.md +++ b/packages/path_provider/CHANGELOG.md @@ -1,7 +1,8 @@ ## 1.2.0 -* On Android, `getApplicationSupportDirectory` is now supported and uses `getFilesDir`. -* `getStorageDirectory` now returns `null` instead of throwing an exception if no external files directory is available. +* On Android, `getApplicationSupportDirectory` is now supported using `getFilesDir`. +* `getExternalStorageDirectory` now returns `null` instead of throwing an + exception if no external files directory is available. ## 1.1.2