From b782a0518a1d1edaa1f8cd7c31cb806e3c433f1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BA=AC?= Date: Sun, 29 Sep 2019 18:48:58 +0800 Subject: [PATCH 1/8] [image_picker] fix crash when aar from 'flutter build aar' --- .../io/flutter/plugins/imagepicker/ImagePickerPlugin.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index 05e3d883e5e2..3ee65369815c 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -82,7 +82,7 @@ public void onActivitySaveInstanceState(Activity activity, Bundle outState) { @Override public void onActivityDestroyed(Activity activity) { if (activity == registrar.activity()) { - ((Application) registrar.context()).unregisterActivityLifecycleCallbacks(this); + ((Application) registrar.context().getApplicationContext()).unregisterActivityLifecycleCallbacks(this);// Use getApplicationContext() to avoid casting failures } } @@ -91,8 +91,8 @@ public void onActivityStopped(Activity activity) {} }; if (this.registrar != null) { - ((Application) this.registrar.context()) - .registerActivityLifecycleCallbacks(this.activityLifecycleCallbacks); + ((Application) this.registrar.context().getApplicationContext()) + .registerActivityLifecycleCallbacks(this.activityLifecycleCallbacks);// Use getApplicationContext() to avoid casting failures } } From 96ee50214a7b45b299a127bc7fcd804ac376a524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BA=AC?= Date: Sun, 29 Sep 2019 19:47:46 +0800 Subject: [PATCH 2/8] format changelog and version+1 --- packages/image_picker/CHANGELOG.md | 4 ++++ .../io/flutter/plugins/imagepicker/ImagePickerPlugin.java | 8 ++++++-- packages/image_picker/pubspec.yaml | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index e6cbc13a621f..00c33bf7e510 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.1+6 + +* Android: Fix ImagePickerPlugin#onCreate cast context may be cause exeception. + ## 0.6.1+5 * Update and migrate iOS example project. diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index 3ee65369815c..4c12f7f52a95 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -82,7 +82,9 @@ public void onActivitySaveInstanceState(Activity activity, Bundle outState) { @Override public void onActivityDestroyed(Activity activity) { if (activity == registrar.activity()) { - ((Application) registrar.context().getApplicationContext()).unregisterActivityLifecycleCallbacks(this);// Use getApplicationContext() to avoid casting failures + ((Application) registrar.context().getApplicationContext()) + .unregisterActivityLifecycleCallbacks( + this); // Use getApplicationContext() to avoid casting failures } } @@ -92,7 +94,9 @@ public void onActivityStopped(Activity activity) {} if (this.registrar != null) { ((Application) this.registrar.context().getApplicationContext()) - .registerActivityLifecycleCallbacks(this.activityLifecycleCallbacks);// Use getApplicationContext() to avoid casting failures + .registerActivityLifecycleCallbacks( + this + .activityLifecycleCallbacks); // Use getApplicationContext() to avoid casting failures } } diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index ad09895d9445..1779edcad0fc 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/image_picker/pubspec.yaml @@ -5,7 +5,7 @@ authors: - Flutter Team - Rhodes Davis Jr. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker -version: 0.6.1+5 +version: 0.6.1+6 flutter: plugin: From f16aeb2819ae3dda208adf8d98f9588c27196298 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BA=AC?= Date: Tue, 1 Oct 2019 08:42:08 +0800 Subject: [PATCH 3/8] fix android run testDebugUnitTest error --- .../io/flutter/plugins/imagepicker/ImagePickerPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index 4c12f7f52a95..e3bb3abb1a27 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -92,7 +92,9 @@ public void onActivityDestroyed(Activity activity) { public void onActivityStopped(Activity activity) {} }; - if (this.registrar != null) { + if (this.registrar != null + && this.registrar.context() != null + && this.registrar.context().getApplicationContext() != null) { ((Application) this.registrar.context().getApplicationContext()) .registerActivityLifecycleCallbacks( this From cf687d7223b9a3e8ed3ee586e023e0c5998dfa0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E4=BA=AC?= Date: Tue, 1 Oct 2019 13:01:57 +0800 Subject: [PATCH 4/8] try to start ci task for "CI agent stopped responding!" --- .../java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index e3bb3abb1a27..3773a07739fe 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -98,7 +98,7 @@ public void onActivityStopped(Activity activity) {} ((Application) this.registrar.context().getApplicationContext()) .registerActivityLifecycleCallbacks( this - .activityLifecycleCallbacks); // Use getApplicationContext() to avoid casting failures + .activityLifecycleCallbacks); // Use getApplicationContext() to avoid casting failures. } } From 36c89e08942d4c90db474b2af9f07ab62514a8b0 Mon Sep 17 00:00:00 2001 From: liujing Date: Wed, 2 Oct 2019 12:36:42 +0800 Subject: [PATCH 5/8] add test --- .../flutter/plugins/imagepicker/ImagePickerPlugin.java | 5 +++-- .../plugins/imagepicker/ImagePickerPluginTest.java | 9 +++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java index 3773a07739fe..b495a8e1a33f 100644 --- a/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java +++ b/packages/image_picker/android/src/main/java/io/flutter/plugins/imagepicker/ImagePickerPlugin.java @@ -81,8 +81,9 @@ public void onActivitySaveInstanceState(Activity activity, Bundle outState) { @Override public void onActivityDestroyed(Activity activity) { - if (activity == registrar.activity()) { - ((Application) registrar.context().getApplicationContext()) + if (activity == registrar.activity() + && registrar.activity().getApplicationContext() != null) { + ((Application) registrar.activity().getApplicationContext()) .unregisterActivityLifecycleCallbacks( this); // Use getApplicationContext() to avoid casting failures } diff --git a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java index e37fceb7fdea..1af024925ce0 100644 --- a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java +++ b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java @@ -109,6 +109,15 @@ public void onResiter_WhenAcitivityIsNull_ShouldNotCrash() { "No exception thrown when ImagePickerPlugin.registerWith ran with activity = null", true); } + @Test + public void onConstructor_WhenContextTypeIsActivity_ShouldNotCrash() { + // When you use Module to dependency, the type of Context will be Application.but when you use AAR to dependency on this plugin, the type of Context will be Activity. + when(mockRegistrar.context()).thenReturn(mockActivity); + new ImagePickerPlugin(mockRegistrar, mockImagePickerDelegate); + assertTrue( + "No exception thrown when ImagePickerPlugin() ran with context instanceof Activity", true); + } + private MethodCall buildMethodCall(final int source) { final Map arguments = new HashMap<>(); arguments.put("source", source); From aa4f3e0d7b53275aa590ae27a02cf27c7833a26b Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 3 Oct 2019 15:15:45 +0800 Subject: [PATCH 6/8] Update CHANGELOG.md --- packages/image_picker/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/image_picker/CHANGELOG.md b/packages/image_picker/CHANGELOG.md index 61ef71a5ce3e..bfc368b308af 100644 --- a/packages/image_picker/CHANGELOG.md +++ b/packages/image_picker/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.1+7 -* Android: Fix ImagePickerPlugin#onCreate cast context may be cause exeception. +* Android: Fix ImagePickerPlugin#onCreate casting context which causes exception. ## 0.6.1+6 From 0191cb187dd979013dc18fb08f1738d255acfc89 Mon Sep 17 00:00:00 2001 From: liujing Date: Thu, 3 Oct 2019 15:16:15 +0800 Subject: [PATCH 7/8] Update ImagePickerPluginTest.java --- .../io/flutter/plugins/imagepicker/ImagePickerPluginTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java index 1af024925ce0..94a81d3d3eac 100644 --- a/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java +++ b/packages/image_picker/example/android/app/src/test/java/io/flutter/plugins/imagepicker/ImagePickerPluginTest.java @@ -111,7 +111,6 @@ public void onResiter_WhenAcitivityIsNull_ShouldNotCrash() { @Test public void onConstructor_WhenContextTypeIsActivity_ShouldNotCrash() { - // When you use Module to dependency, the type of Context will be Application.but when you use AAR to dependency on this plugin, the type of Context will be Activity. when(mockRegistrar.context()).thenReturn(mockActivity); new ImagePickerPlugin(mockRegistrar, mockImagePickerDelegate); assertTrue( From 59a7cb5533ac720e794162ead638214051cd6896 Mon Sep 17 00:00:00 2001 From: liujing Date: Sat, 5 Oct 2019 12:17:06 +0800 Subject: [PATCH 8/8] update changelog --- packages/image_picker/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/image_picker/pubspec.yaml b/packages/image_picker/pubspec.yaml index 1779edcad0fc..ce1b46c63366 100755 --- a/packages/image_picker/pubspec.yaml +++ b/packages/image_picker/pubspec.yaml @@ -5,7 +5,7 @@ authors: - Flutter Team - Rhodes Davis Jr. homepage: https://github.com/flutter/plugins/tree/master/packages/image_picker -version: 0.6.1+6 +version: 0.6.1+7 flutter: plugin: