From ed8667335a4090109edb6722f7f2c39cd7d872dd Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 7 Sep 2020 12:15:29 +0100 Subject: [PATCH 01/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- packages/share/android/build.gradle | 1 + .../plugins/share/MethodCallHandler.java | 32 +++++++++---- .../flutter/plugins/share/ShareFilesMap.java | 45 +++++++++++++++++++ .../io/flutter/plugins/share/ShareMap.java | 25 +++++++++++ 4 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java create mode 100644 packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java diff --git a/packages/share/android/build.gradle b/packages/share/android/build.gradle index 7506f4db8261..15a34f250ecd 100644 --- a/packages/share/android/build.gradle +++ b/packages/share/android/build.gradle @@ -35,5 +35,6 @@ android { dependencies { implementation 'androidx.core:core:1.3.1' implementation 'androidx.annotation:annotation:1.1.0' + implementation 'com.google.code.gson:gson:2.8.6' } } diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 02841d3a4ae2..a28400248194 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -7,13 +7,15 @@ import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; import java.io.*; -import java.util.List; import java.util.Map; +import com.google.gson.Gson; +import com.google.gson.JsonSyntaxException; /** Handles the method calls for the plugin. */ class MethodCallHandler implements MethodChannel.MethodCallHandler { private Share share; + private Gson gson = new Gson(); MethodCallHandler(Share share) { this.share = share; @@ -25,21 +27,29 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { case "share": expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. - share.share((String) call.argument("text"), (String) call.argument("subject")); - result.success(null); + try { + // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using Gson + ShareMap shareMap = gson.fromJson(toJson(call), ShareMap.class); + share.share(shareMap.getText(), shareMap.getSubject()); + result.success(null); + } catch (JsonSyntaxException e) { + result.error(e.getMessage(), null, null); + } break; case "shareFiles": expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. try { + // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using Gson + ShareFilesMap shareFilesMap = gson.fromJson(toJson(call), ShareFilesMap.class); share.shareFiles( - (List) call.argument("paths"), - (List) call.argument("mimeTypes"), - (String) call.argument("text"), - (String) call.argument("subject")); + shareFilesMap.getPaths(), + shareFilesMap.getMimeTypes(), + shareFilesMap.getText(), + shareFilesMap.getSubject()); result.success(null); - } catch (IOException e) { + } catch (IOException | JsonSyntaxException e) { result.error(e.getMessage(), null, null); } break; @@ -54,4 +64,8 @@ private void expectMapArguments(MethodCall call) throws IllegalArgumentException throw new IllegalArgumentException("Map argument expected"); } } -} + + private String toJson(MethodCall call) { + return gson.toJson(call.arguments); + } +} \ No newline at end of file diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java new file mode 100644 index 000000000000..c9f5ce34f418 --- /dev/null +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java @@ -0,0 +1,45 @@ +package io.flutter.plugins.share; + +import java.util.List; + +public class ShareFilesMap { + List paths; + List mimeTypes; + String text; + String subject; + + public ShareFilesMap() { + } + + public List getPaths() { + return paths; + } + + public void setPaths(List paths) { + this.paths = paths; + } + + public List getMimeTypes() { + return mimeTypes; + } + + public void setMimeTypes(List mimeTypes) { + this.mimeTypes = mimeTypes; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } +} diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java new file mode 100644 index 000000000000..7ca939dabbc0 --- /dev/null +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java @@ -0,0 +1,25 @@ +package io.flutter.plugins.share; + +public class ShareMap { + String text; + String subject; + + public ShareMap() { + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } +} From cd493116b130a239a51f8203afaa6826db1374e7 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 7 Sep 2020 12:24:02 +0100 Subject: [PATCH 02/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- packages/share/CHANGELOG.md | 4 ++++ packages/share/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/share/CHANGELOG.md b/packages/share/CHANGELOG.md index c4ee830ed34f..8037c75943df 100644 --- a/packages/share/CHANGELOG.md +++ b/packages/share/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.5+1 + +* Avoiding uses unchecked or unsafe Object Type Casting + ## 0.6.5 * Added support for sharing files diff --git a/packages/share/pubspec.yaml b/packages/share/pubspec.yaml index 918087b139ec..f9c1f4bad4e6 100644 --- a/packages/share/pubspec.yaml +++ b/packages/share/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/share # 0.6.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.6.5 +version: 0.6.5+1 flutter: plugin: From 99b5950a65fc8bf42d0cd9f4fa6d191dae4382d9 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 7 Sep 2020 12:59:56 +0100 Subject: [PATCH 03/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- .../plugins/share/MethodCallHandler.java | 18 ++++---- .../flutter/plugins/share/ShareFilesMap.java | 45 ------------------- .../io/flutter/plugins/share/ShareMap.java | 20 +++++++++ 3 files changed, 30 insertions(+), 53 deletions(-) delete mode 100644 packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index a28400248194..3cdbc86eb569 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -16,6 +16,7 @@ class MethodCallHandler implements MethodChannel.MethodCallHandler { private Share share; private Gson gson = new Gson(); + private ShareMap shareMap; MethodCallHandler(Share share) { this.share = share; @@ -29,7 +30,7 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { // Android does not support showing the share sheet at a particular point on screen. try { // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using Gson - ShareMap shareMap = gson.fromJson(toJson(call), ShareMap.class); + shareMap = getShareMap(call); share.share(shareMap.getText(), shareMap.getSubject()); result.success(null); } catch (JsonSyntaxException e) { @@ -42,12 +43,12 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { // Android does not support showing the share sheet at a particular point on screen. try { // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using Gson - ShareFilesMap shareFilesMap = gson.fromJson(toJson(call), ShareFilesMap.class); + shareMap = getShareMap(call); share.shareFiles( - shareFilesMap.getPaths(), - shareFilesMap.getMimeTypes(), - shareFilesMap.getText(), - shareFilesMap.getSubject()); + shareMap.getPaths(), + shareMap.getMimeTypes(), + shareMap.getText(), + shareMap.getSubject()); result.success(null); } catch (IOException | JsonSyntaxException e) { result.error(e.getMessage(), null, null); @@ -65,7 +66,8 @@ private void expectMapArguments(MethodCall call) throws IllegalArgumentException } } - private String toJson(MethodCall call) { - return gson.toJson(call.arguments); + private ShareMap getShareMap(MethodCall call){ + String jsonData = gson.toJson(call.arguments); + return gson.fromJson(jsonData, ShareMap.class); } } \ No newline at end of file diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java deleted file mode 100644 index c9f5ce34f418..000000000000 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareFilesMap.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.flutter.plugins.share; - -import java.util.List; - -public class ShareFilesMap { - List paths; - List mimeTypes; - String text; - String subject; - - public ShareFilesMap() { - } - - public List getPaths() { - return paths; - } - - public void setPaths(List paths) { - this.paths = paths; - } - - public List getMimeTypes() { - return mimeTypes; - } - - public void setMimeTypes(List mimeTypes) { - this.mimeTypes = mimeTypes; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } -} diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java index 7ca939dabbc0..e2d507f28a44 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java @@ -1,12 +1,32 @@ package io.flutter.plugins.share; +import java.util.List; + public class ShareMap { + List paths; + List mimeTypes; String text; String subject; public ShareMap() { } + public List getPaths() { + return paths; + } + + public void setPaths(List paths) { + this.paths = paths; + } + + public List getMimeTypes() { + return mimeTypes; + } + + public void setMimeTypes(List mimeTypes) { + this.mimeTypes = mimeTypes; + } + public String getText() { return text; } From 2f51f5f0f24ba26f97a41dd3c42e54496170b42d Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 7 Sep 2020 13:01:11 +0100 Subject: [PATCH 04/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- .../main/java/io/flutter/plugins/share/MethodCallHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 3cdbc86eb569..90609d6f68d8 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -16,7 +16,6 @@ class MethodCallHandler implements MethodChannel.MethodCallHandler { private Share share; private Gson gson = new Gson(); - private ShareMap shareMap; MethodCallHandler(Share share) { this.share = share; @@ -24,6 +23,7 @@ class MethodCallHandler implements MethodChannel.MethodCallHandler { @Override public void onMethodCall(MethodCall call, MethodChannel.Result result) { + ShareMap shareMap; switch (call.method) { case "share": expectMapArguments(call); From 02d7ef0c1edc7d7e7291779b756e5af88331c655 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 7 Sep 2020 14:40:18 +0100 Subject: [PATCH 05/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- .../plugins/share/MethodCallHandler.java | 28 +++++---- .../io/flutter/plugins/share/ShareMap.java | 59 +++++++++---------- 2 files changed, 45 insertions(+), 42 deletions(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 90609d6f68d8..62f95dcd122e 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -4,13 +4,15 @@ package io.flutter.plugins.share; -import io.flutter.plugin.common.MethodCall; -import io.flutter.plugin.common.MethodChannel; -import java.io.*; -import java.util.Map; import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; +import java.io.IOException; +import java.util.Map; + +import io.flutter.plugin.common.MethodCall; +import io.flutter.plugin.common.MethodChannel; + /** Handles the method calls for the plugin. */ class MethodCallHandler implements MethodChannel.MethodCallHandler { @@ -29,7 +31,8 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. try { - // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using Gson + // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using + // Gson shareMap = getShareMap(call); share.share(shareMap.getText(), shareMap.getSubject()); result.success(null); @@ -42,13 +45,14 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { // Android does not support showing the share sheet at a particular point on screen. try { - // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using Gson + // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using + // Gson shareMap = getShareMap(call); share.shareFiles( - shareMap.getPaths(), - shareMap.getMimeTypes(), - shareMap.getText(), - shareMap.getSubject()); + shareMap.getPaths(), + shareMap.getMimeTypes(), + shareMap.getText(), + shareMap.getSubject()); result.success(null); } catch (IOException | JsonSyntaxException e) { result.error(e.getMessage(), null, null); @@ -66,8 +70,8 @@ private void expectMapArguments(MethodCall call) throws IllegalArgumentException } } - private ShareMap getShareMap(MethodCall call){ + private ShareMap getShareMap(MethodCall call) { String jsonData = gson.toJson(call.arguments); return gson.fromJson(jsonData, ShareMap.class); } -} \ No newline at end of file +} diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java index e2d507f28a44..bad36dfbdc53 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java @@ -3,43 +3,42 @@ import java.util.List; public class ShareMap { - List paths; - List mimeTypes; - String text; - String subject; + List paths; + List mimeTypes; + String text; + String subject; - public ShareMap() { - } + public ShareMap() {} - public List getPaths() { - return paths; - } + public List getPaths() { + return paths; + } - public void setPaths(List paths) { - this.paths = paths; - } + public void setPaths(List paths) { + this.paths = paths; + } - public List getMimeTypes() { - return mimeTypes; - } + public List getMimeTypes() { + return mimeTypes; + } - public void setMimeTypes(List mimeTypes) { - this.mimeTypes = mimeTypes; - } + public void setMimeTypes(List mimeTypes) { + this.mimeTypes = mimeTypes; + } - public String getText() { - return text; - } + public String getText() { + return text; + } - public void setText(String text) { - this.text = text; - } + public void setText(String text) { + this.text = text; + } - public String getSubject() { - return subject; - } + public String getSubject() { + return subject; + } - public void setSubject(String subject) { - this.subject = subject; - } + public void setSubject(String subject) { + this.subject = subject; + } } From 6e87f1deff906eb2a5bb10335b9c303f168f9a71 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 7 Sep 2020 15:10:49 +0100 Subject: [PATCH 06/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- .../io/flutter/plugins/share/MethodCallHandler.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 62f95dcd122e..1dd5d5494ffa 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -6,12 +6,10 @@ import com.google.gson.Gson; import com.google.gson.JsonSyntaxException; - -import java.io.IOException; -import java.util.Map; - import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; +import java.io.*; +import java.util.Map; /** Handles the method calls for the plugin. */ class MethodCallHandler implements MethodChannel.MethodCallHandler { @@ -30,9 +28,8 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { case "share": expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. + // Avoiding uses unchecked or unsafe Casting by converting Map to Object using Gson. try { - // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using - // Gson shareMap = getShareMap(call); share.share(shareMap.getText(), shareMap.getSubject()); result.success(null); @@ -44,9 +41,8 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. + // Avoiding uses unchecked or unsafe Casting by converting Map to Object using Gson. try { - // Avoiding uses unchecked or unsafe Object Type Casting by converting Map to Object using - // Gson shareMap = getShareMap(call); share.shareFiles( shareMap.getPaths(), From c68a55d53c2e6da0a4d6fb89de058579f68e9250 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Thu, 10 Sep 2020 21:12:31 +0100 Subject: [PATCH 07/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- packages/share/android/build.gradle | 1 - .../plugins/share/MethodCallHandler.java | 44 +++++++------------ 2 files changed, 17 insertions(+), 28 deletions(-) diff --git a/packages/share/android/build.gradle b/packages/share/android/build.gradle index 15a34f250ecd..7506f4db8261 100644 --- a/packages/share/android/build.gradle +++ b/packages/share/android/build.gradle @@ -35,6 +35,5 @@ android { dependencies { implementation 'androidx.core:core:1.3.1' implementation 'androidx.annotation:annotation:1.1.0' - implementation 'com.google.code.gson:gson:2.8.6' } } diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 1dd5d5494ffa..2fda77301f51 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -4,18 +4,17 @@ package io.flutter.plugins.share; -import com.google.gson.Gson; -import com.google.gson.JsonSyntaxException; +import java.io.IOException; +import java.util.List; +import java.util.Map; + import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; -import java.io.*; -import java.util.Map; /** Handles the method calls for the plugin. */ class MethodCallHandler implements MethodChannel.MethodCallHandler { private Share share; - private Gson gson = new Gson(); MethodCallHandler(Share share) { this.share = share; @@ -23,34 +22,30 @@ class MethodCallHandler implements MethodChannel.MethodCallHandler { @Override public void onMethodCall(MethodCall call, MethodChannel.Result result) { - ShareMap shareMap; + String text, subject; + List paths, mimeTypes; switch (call.method) { case "share": expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. - // Avoiding uses unchecked or unsafe Casting by converting Map to Object using Gson. - try { - shareMap = getShareMap(call); - share.share(shareMap.getText(), shareMap.getSubject()); - result.success(null); - } catch (JsonSyntaxException e) { - result.error(e.getMessage(), null, null); - } + text = call.argument("text"); + subject = call.argument("subject"); + share.share(text, subject); + result.success(null); break; case "shareFiles": expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. - // Avoiding uses unchecked or unsafe Casting by converting Map to Object using Gson. try { - shareMap = getShareMap(call); - share.shareFiles( - shareMap.getPaths(), - shareMap.getMimeTypes(), - shareMap.getText(), - shareMap.getSubject()); + paths = call.argument("paths"); + mimeTypes = call.argument("mimeTypes"); + text = call.argument("text"); + subject = call.argument("subject"); + share.shareFiles(paths, mimeTypes, text, subject); + share.shareFiles(paths, mimeTypes, text, subject); result.success(null); - } catch (IOException | JsonSyntaxException e) { + } catch (IOException e) { result.error(e.getMessage(), null, null); } break; @@ -65,9 +60,4 @@ private void expectMapArguments(MethodCall call) throws IllegalArgumentException throw new IllegalArgumentException("Map argument expected"); } } - - private ShareMap getShareMap(MethodCall call) { - String jsonData = gson.toJson(call.arguments); - return gson.fromJson(jsonData, ShareMap.class); - } } From 90529c88127125b82eac0b55794d052f418ecb6a Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Thu, 10 Sep 2020 21:14:31 +0100 Subject: [PATCH 08/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- .../main/java/io/flutter/plugins/share/MethodCallHandler.java | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 2fda77301f51..656fea088b33 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -43,7 +43,6 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { text = call.argument("text"); subject = call.argument("subject"); share.shareFiles(paths, mimeTypes, text, subject); - share.shareFiles(paths, mimeTypes, text, subject); result.success(null); } catch (IOException e) { result.error(e.getMessage(), null, null); From cbc56a06d11765fa6ee4995a4e7c9d1593717c1b Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Thu, 10 Sep 2020 21:15:05 +0100 Subject: [PATCH 09/18] [share] MethodCallHandler.java uses unchecked or unsafe operations --- .../io/flutter/plugins/share/ShareMap.java | 44 ------------------- 1 file changed, 44 deletions(-) delete mode 100644 packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java b/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java deleted file mode 100644 index bad36dfbdc53..000000000000 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/ShareMap.java +++ /dev/null @@ -1,44 +0,0 @@ -package io.flutter.plugins.share; - -import java.util.List; - -public class ShareMap { - List paths; - List mimeTypes; - String text; - String subject; - - public ShareMap() {} - - public List getPaths() { - return paths; - } - - public void setPaths(List paths) { - this.paths = paths; - } - - public List getMimeTypes() { - return mimeTypes; - } - - public void setMimeTypes(List mimeTypes) { - this.mimeTypes = mimeTypes; - } - - public String getText() { - return text; - } - - public void setText(String text) { - this.text = text; - } - - public String getSubject() { - return subject; - } - - public void setSubject(String subject) { - this.subject = subject; - } -} From 714864fcf24d3e38849f2dfb4547d794657444f5 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Thu, 10 Sep 2020 22:26:26 +0100 Subject: [PATCH 10/18] Update MethodCallHandler.java --- .../java/io/flutter/plugins/share/MethodCallHandler.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 656fea088b33..9eaac3790d1d 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -4,12 +4,11 @@ package io.flutter.plugins.share; -import java.io.IOException; -import java.util.List; -import java.util.Map; - import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; +import java.io.*; +import java.util.List; +import java.util.Map; /** Handles the method calls for the plugin. */ class MethodCallHandler implements MethodChannel.MethodCallHandler { From 629981619fad95f7b3c86254e327edead5c2488e Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Sun, 13 Sep 2020 11:22:39 +0100 Subject: [PATCH 11/18] Handle deprecation & unchecked warning as error --- packages/share/android/build.gradle | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/share/android/build.gradle b/packages/share/android/build.gradle index 7506f4db8261..ffa1432fa17a 100644 --- a/packages/share/android/build.gradle +++ b/packages/share/android/build.gradle @@ -1,5 +1,6 @@ group 'io.flutter.plugins.share' version '1.0-SNAPSHOT' +def args = ["-Xlint:deprecation","-Xlint:unchecked","-Werror"] buildscript { repositories { @@ -19,6 +20,10 @@ rootProject.allprojects { } } +project.getTasks().withType(JavaCompile){ + options.compilerArgs.addAll(args) +} + apply plugin: 'com.android.library' android { From 244209203c6f4430a5eb29ef08ca9fae06cb4163 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 14 Sep 2020 19:26:21 +0100 Subject: [PATCH 12/18] Update MethodCallHandler.java --- .../io/flutter/plugins/share/MethodCallHandler.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 9eaac3790d1d..3ce6a5821189 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -21,8 +21,8 @@ class MethodCallHandler implements MethodChannel.MethodCallHandler { @Override public void onMethodCall(MethodCall call, MethodChannel.Result result) { - String text, subject; - List paths, mimeTypes; + String text; + String subject; switch (call.method) { case "share": expectMapArguments(call); @@ -35,12 +35,12 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) { case "shareFiles": expectMapArguments(call); + List paths = call.argument("paths"); + List mimeTypes = call.argument("mimeTypes"); + text = call.argument("text"); + subject = call.argument("subject"); // Android does not support showing the share sheet at a particular point on screen. try { - paths = call.argument("paths"); - mimeTypes = call.argument("mimeTypes"); - text = call.argument("text"); - subject = call.argument("subject"); share.shareFiles(paths, mimeTypes, text, subject); result.success(null); } catch (IOException e) { From c906be11c8a888f98a516c60c7ed3a695d30e654 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Mon, 14 Sep 2020 19:52:14 +0100 Subject: [PATCH 13/18] Update MethodCallHandler.java --- .../java/io/flutter/plugins/share/MethodCallHandler.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java index 3ce6a5821189..99baabeab6b7 100644 --- a/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java +++ b/packages/share/android/src/main/java/io/flutter/plugins/share/MethodCallHandler.java @@ -21,14 +21,12 @@ class MethodCallHandler implements MethodChannel.MethodCallHandler { @Override public void onMethodCall(MethodCall call, MethodChannel.Result result) { - String text; - String subject; switch (call.method) { case "share": expectMapArguments(call); // Android does not support showing the share sheet at a particular point on screen. - text = call.argument("text"); - subject = call.argument("subject"); + String text = call.argument("text"); + String subject = call.argument("subject"); share.share(text, subject); result.success(null); break; From dab8122efe81e53a2ac26388388d66731b5b7c79 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Fri, 18 Sep 2020 21:45:43 +0100 Subject: [PATCH 14/18] Android registerDefaultNetworkCallback --- .../connectivity/connectivity/CHANGELOG.md | 5 ++ packages/connectivity/connectivity/README.md | 11 ++++- .../connectivity/android/build.gradle | 5 ++ .../plugins/connectivity/Connectivity.java | 4 ++ .../ConnectivityBroadcastReceiver.java | 46 ++++++++++++++++++- .../connectivity/ConnectivityPlugin.java | 8 ++-- .../connectivity/connectivity/pubspec.yaml | 2 +- 7 files changed, 73 insertions(+), 8 deletions(-) diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index 27a1bb100e74..622ac562663b 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.4.9+3 + +* Update README with the updated information about WifiInfo on Android O or higher. +* Android: Avoiding uses or overrides a deprecated API + ## 0.4.9+2 * Update package:e2e to use package:integration_test diff --git a/packages/connectivity/connectivity/README.md b/packages/connectivity/connectivity/README.md index f51be070d8f5..23de86361962 100644 --- a/packages/connectivity/connectivity/README.md +++ b/packages/connectivity/connectivity/README.md @@ -58,7 +58,16 @@ dispose() { ``` Note that connectivity changes are no longer communicated to Android apps in the background starting with Android O. *You should always check for connectivity status when your app is resumed.* The broadcast is only useful when your application is in the foreground. - +To successfully get WiFi Name or Wi-Fi BSSID starting with Android O, ensure all of the following conditions are met: + + * If your app is targeting Android 10 (API level 29) SDK or higher, your app has the ACCESS_FINE_LOCATION permission. + + * If your app is targeting SDK lower than Android 10 (API level 29), your app has the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission. + + * Your app has the ACCESS_WIFI_STATE permission. + + * Location services are enabled on the device (under Settings > Location). + You can get wi-fi related information using: ```dart diff --git a/packages/connectivity/connectivity/android/build.gradle b/packages/connectivity/connectivity/android/build.gradle index b9b147b29b77..3542dbc6c01d 100644 --- a/packages/connectivity/connectivity/android/build.gradle +++ b/packages/connectivity/connectivity/android/build.gradle @@ -1,5 +1,6 @@ group 'io.flutter.plugins.connectivity' version '1.0-SNAPSHOT' +def args = ["-Xlint:deprecation","-Xlint:unchecked","-Werror"] buildscript { repositories { @@ -19,6 +20,10 @@ rootProject.allprojects { } } +project.getTasks().withType(JavaCompile){ + options.compilerArgs.addAll(args) +} + apply plugin: 'com.android.library' android { diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/Connectivity.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/Connectivity.java index 2d07641a42c1..dbf8e25eb7ad 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/Connectivity.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/Connectivity.java @@ -100,4 +100,8 @@ private String getNetworkTypeLegacy() { return "none"; } } + + public ConnectivityManager getConnectivityManager() { + return connectivityManager; + } } diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java index be8b47eff944..fa2efd297b7d 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java @@ -9,6 +9,13 @@ import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; +import android.net.Network; +import android.os.Build; +import android.os.Handler; +import android.os.Looper; + +import androidx.annotation.RequiresApi; + import io.flutter.plugin.common.EventChannel; /** @@ -24,6 +31,8 @@ class ConnectivityBroadcastReceiver extends BroadcastReceiver private Context context; private Connectivity connectivity; private EventChannel.EventSink events; + private Handler mainHandler = new Handler(Looper.getMainLooper()); + public static final String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE"; ConnectivityBroadcastReceiver(Context context, Connectivity connectivity) { this.context = context; @@ -33,12 +42,20 @@ class ConnectivityBroadcastReceiver extends BroadcastReceiver @Override public void onListen(Object arguments, EventChannel.EventSink events) { this.events = events; - context.registerReceiver(this, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); + if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + connectivity.getConnectivityManager().registerDefaultNetworkCallback(getNetworkCallback()); + } else { + context.registerReceiver(this, new IntentFilter(CONNECTIVITY_ACTION)); + } } @Override public void onCancel(Object arguments) { - context.unregisterReceiver(this); + if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + connectivity.getConnectivityManager().unregisterNetworkCallback(getNetworkCallback()); + } else { + context.unregisterReceiver(this); + } } @Override @@ -47,4 +64,29 @@ public void onReceive(Context context, Intent intent) { events.success(connectivity.getNetworkType()); } } + + @RequiresApi(api = Build.VERSION_CODES.N) + ConnectivityManager.NetworkCallback getNetworkCallback(){ + return new ConnectivityManager.NetworkCallback(){ + @Override + public void onAvailable(Network network) { + sendEvent(); + } + + @Override + public void onLost(Network network) { + sendEvent(); + } + }; + } + + private void sendEvent(){ + Runnable runnable = new Runnable() { + @Override + public void run() { + events.success(connectivity.getNetworkType()); + } + }; + mainHandler.post(runnable); + } } diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java index b458fa97e203..d2f8f261c68c 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java @@ -40,15 +40,15 @@ private void setupChannels(BinaryMessenger messenger, Context context) { methodChannel = new MethodChannel(messenger, "plugins.flutter.io/connectivity"); eventChannel = new EventChannel(messenger, "plugins.flutter.io/connectivity_status"); ConnectivityManager connectivityManager = - (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); Connectivity connectivity = new Connectivity(connectivityManager, wifiManager); ConnectivityMethodChannelHandler methodChannelHandler = - new ConnectivityMethodChannelHandler(connectivity); + new ConnectivityMethodChannelHandler(connectivity); ConnectivityBroadcastReceiver receiver = - new ConnectivityBroadcastReceiver(context, connectivity); + new ConnectivityBroadcastReceiver(context, connectivity); methodChannel.setMethodCallHandler(methodChannelHandler); eventChannel.setStreamHandler(receiver); diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index dc9d90827169..95c9ec280394 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/c # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.9+2 +version: 0.4.9+3 flutter: plugin: From 49a9ba5a262dd543678d905887dea9bfe9e05446 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Fri, 18 Sep 2020 21:54:41 +0100 Subject: [PATCH 15/18] Android registerDefaultNetworkCallback --- packages/connectivity/connectivity/README.md | 3 +-- .../plugins/connectivity/ConnectivityBroadcastReceiver.java | 2 -- .../io/flutter/plugins/connectivity/ConnectivityPlugin.java | 6 +++--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/packages/connectivity/connectivity/README.md b/packages/connectivity/connectivity/README.md index 23de86361962..0a13749b9dc5 100644 --- a/packages/connectivity/connectivity/README.md +++ b/packages/connectivity/connectivity/README.md @@ -58,14 +58,13 @@ dispose() { ``` Note that connectivity changes are no longer communicated to Android apps in the background starting with Android O. *You should always check for connectivity status when your app is resumed.* The broadcast is only useful when your application is in the foreground. + To successfully get WiFi Name or Wi-Fi BSSID starting with Android O, ensure all of the following conditions are met: * If your app is targeting Android 10 (API level 29) SDK or higher, your app has the ACCESS_FINE_LOCATION permission. * If your app is targeting SDK lower than Android 10 (API level 29), your app has the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission. - * Your app has the ACCESS_WIFI_STATE permission. - * Location services are enabled on the device (under Settings > Location). You can get wi-fi related information using: diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java index fa2efd297b7d..a67d9832dffc 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java @@ -13,9 +13,7 @@ import android.os.Build; import android.os.Handler; import android.os.Looper; - import androidx.annotation.RequiresApi; - import io.flutter.plugin.common.EventChannel; /** diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java index d2f8f261c68c..534159107bff 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java @@ -40,15 +40,15 @@ private void setupChannels(BinaryMessenger messenger, Context context) { methodChannel = new MethodChannel(messenger, "plugins.flutter.io/connectivity"); eventChannel = new EventChannel(messenger, "plugins.flutter.io/connectivity_status"); ConnectivityManager connectivityManager = - (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); + (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); Connectivity connectivity = new Connectivity(connectivityManager, wifiManager); ConnectivityMethodChannelHandler methodChannelHandler = - new ConnectivityMethodChannelHandler(connectivity); + new ConnectivityMethodChannelHandler(connectivity); ConnectivityBroadcastReceiver receiver = - new ConnectivityBroadcastReceiver(context, connectivity); + new ConnectivityBroadcastReceiver(context, connectivity); methodChannel.setMethodCallHandler(methodChannelHandler); eventChannel.setStreamHandler(receiver); From 317f497c243627451bf1f9dc470e50f6c3c05441 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun Date: Fri, 18 Sep 2020 22:19:20 +0100 Subject: [PATCH 16/18] Android registerDefaultNetworkCallback --- .../ConnectivityBroadcastReceiver.java | 23 ++++++++++--------- .../connectivity/ConnectivityPlugin.java | 3 ++- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java index a67d9832dffc..0c6554c0a5f7 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityBroadcastReceiver.java @@ -40,7 +40,7 @@ class ConnectivityBroadcastReceiver extends BroadcastReceiver @Override public void onListen(Object arguments, EventChannel.EventSink events) { this.events = events; - if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { connectivity.getConnectivityManager().registerDefaultNetworkCallback(getNetworkCallback()); } else { context.registerReceiver(this, new IntentFilter(CONNECTIVITY_ACTION)); @@ -49,7 +49,7 @@ public void onListen(Object arguments, EventChannel.EventSink events) { @Override public void onCancel(Object arguments) { - if(android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){ + if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { connectivity.getConnectivityManager().unregisterNetworkCallback(getNetworkCallback()); } else { context.unregisterReceiver(this); @@ -64,8 +64,8 @@ public void onReceive(Context context, Intent intent) { } @RequiresApi(api = Build.VERSION_CODES.N) - ConnectivityManager.NetworkCallback getNetworkCallback(){ - return new ConnectivityManager.NetworkCallback(){ + ConnectivityManager.NetworkCallback getNetworkCallback() { + return new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { sendEvent(); @@ -78,13 +78,14 @@ public void onLost(Network network) { }; } - private void sendEvent(){ - Runnable runnable = new Runnable() { - @Override - public void run() { - events.success(connectivity.getNetworkType()); - } - }; + private void sendEvent() { + Runnable runnable = + new Runnable() { + @Override + public void run() { + events.success(connectivity.getNetworkType()); + } + }; mainHandler.post(runnable); } } diff --git a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java index 534159107bff..f91bd206ff93 100644 --- a/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java +++ b/packages/connectivity/connectivity/android/src/main/java/io/flutter/plugins/connectivity/ConnectivityPlugin.java @@ -41,7 +41,8 @@ private void setupChannels(BinaryMessenger messenger, Context context) { eventChannel = new EventChannel(messenger, "plugins.flutter.io/connectivity_status"); ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); - WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + WifiManager wifiManager = + (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE); Connectivity connectivity = new Connectivity(connectivityManager, wifiManager); From 3e7e3e101ecf0a394f966d60d876f82c7a598873 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sat, 26 Sep 2020 00:28:13 +0100 Subject: [PATCH 17/18] Update CHANGELOG.md --- packages/connectivity/connectivity/CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/connectivity/connectivity/CHANGELOG.md b/packages/connectivity/connectivity/CHANGELOG.md index 622ac562663b..a42eaf0a359c 100644 --- a/packages/connectivity/connectivity/CHANGELOG.md +++ b/packages/connectivity/connectivity/CHANGELOG.md @@ -1,8 +1,12 @@ -## 0.4.9+3 +## 0.4.9+4 * Update README with the updated information about WifiInfo on Android O or higher. * Android: Avoiding uses or overrides a deprecated API +## 0.4.9+3 + +* Keep handling deprecated Android v1 classes for backward compatibility. + ## 0.4.9+2 * Update package:e2e to use package:integration_test From 226041b358785b814ca0d59890aa359950b60946 Mon Sep 17 00:00:00 2001 From: Hamdi Kahloun <32666446+hamdikahloun@users.noreply.github.com> Date: Sat, 26 Sep 2020 00:28:35 +0100 Subject: [PATCH 18/18] Update pubspec.yaml --- packages/connectivity/connectivity/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/connectivity/connectivity/pubspec.yaml b/packages/connectivity/connectivity/pubspec.yaml index 95c9ec280394..691c683a84e0 100644 --- a/packages/connectivity/connectivity/pubspec.yaml +++ b/packages/connectivity/connectivity/pubspec.yaml @@ -5,7 +5,7 @@ homepage: https://github.com/flutter/plugins/tree/master/packages/connectivity/c # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump # the version to 2.0.0. # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0 -version: 0.4.9+3 +version: 0.4.9+4 flutter: plugin: