From 25791cdf916427df938c293b7e722ed4ec6a95c1 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Sun, 7 Jul 2019 17:47:26 -0700 Subject: [PATCH 1/2] Update to use getExternalFilesDir --- packages/path_provider/CHANGELOG.md | 4 ++++ .../flutter/plugins/pathprovider/PathProviderPlugin.java | 2 +- .../path_provider/example/test_driver/path_provider.dart | 9 ++++++--- packages/path_provider/lib/path_provider.dart | 2 +- packages/path_provider/pubspec.yaml | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/path_provider/CHANGELOG.md b/packages/path_provider/CHANGELOG.md index 0693af3e5153..ea956fcc766f 100644 --- a/packages/path_provider/CHANGELOG.md +++ b/packages/path_provider/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.2 + +* `getExternalStorageDirectory` now uses `getExternalFilesDir` on Android. + ## 1.1.1 * Cast error codes as longs in iOS error strings to ensure compatibility 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 d56cb2b60ca1..1fda0eca6b79 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 @@ -52,6 +52,6 @@ private String getPathProviderApplicationDocumentsDirectory() { } private String getPathProviderStorageDirectory() { - return Environment.getExternalStorageDirectory().getAbsolutePath(); + return mRegistrar.context().getExternalFilesDir(null).getAbsolutePath(); } } diff --git a/packages/path_provider/example/test_driver/path_provider.dart b/packages/path_provider/example/test_driver/path_provider.dart index 2f225a7034d8..219d6660df7e 100644 --- a/packages/path_provider/example/test_driver/path_provider.dart +++ b/packages/path_provider/example/test_driver/path_provider.dart @@ -56,9 +56,12 @@ void main() { expect(result, throwsA(isInstanceOf())); } else if (Platform.isAndroid) { final Directory result = await getExternalStorageDirectory(); - // This directory is not accessible in Android emulators. - // However, it should at least have a fake path returned. - expect(result.path.length, isNonZero); + final String uuid = Uuid().v1(); + final File file = File('${result.path}/$uuid.txt'); + file.writeAsStringSync('Hello world!'); + expect(file.readAsStringSync(), 'Hello world!'); + expect(result.listSync(), isNotEmpty); + file.deleteSync(); } }); } diff --git a/packages/path_provider/lib/path_provider.dart b/packages/path_provider/lib/path_provider.dart index 08e35d68dd63..10755873c321 100644 --- a/packages/path_provider/lib/path_provider.dart +++ b/packages/path_provider/lib/path_provider.dart @@ -76,7 +76,7 @@ Future getApplicationDocumentsDirectory() async { /// On iOS, this function throws an [UnsupportedError] as it is not possible /// to access outside the app's sandbox. /// -/// On Android this uses the `getExternalStorageDirectory` API. +/// On Android this uses the `getExternalFilesDir(null)`. Future getExternalStorageDirectory() async { if (Platform.isIOS) throw UnsupportedError("Functionality not available on iOS"); diff --git a/packages/path_provider/pubspec.yaml b/packages/path_provider/pubspec.yaml index 62bab1030fac..96f248625b8a 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.1 +version: 1.1.2 flutter: plugin: From c882f39f8e2229d4586e210af6e3986557680b29 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Sun, 7 Jul 2019 17:57:44 -0700 Subject: [PATCH 2/2] reformat --- .../java/io/flutter/plugins/pathprovider/PathProviderPlugin.java | 1 - 1 file changed, 1 deletion(-) 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 1fda0eca6b79..ae432639f75a 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 @@ -4,7 +4,6 @@ package io.flutter.plugins.pathprovider; -import android.os.Environment; import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import io.flutter.plugin.common.MethodChannel.MethodCallHandler;