From 390331558821f278c788e08e91bff1c5a4d4f7a9 Mon Sep 17 00:00:00 2001 From: Dat Nguyen Date: Tue, 18 Jun 2019 23:34:45 +0700 Subject: [PATCH 1/5] fix crash in deleteInstanceID function when return result in background thread --- .../FirebaseMessagingPlugin.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java index 7c01c516c843..56c21b2f586e 100644 --- a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java @@ -9,6 +9,8 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.util.Log; import androidx.annotation.NonNull; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -148,14 +150,24 @@ public void onComplete(@NonNull Task task) { public void run() { try { FirebaseInstanceId.getInstance().deleteInstanceId(); - result.success(true); + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + result.success(true); + } + }); } catch (IOException ex) { Log.e(TAG, "deleteInstanceID, error:", ex); - result.success(false); + new Handler(Looper.getMainLooper()).post(new Runnable() { + @Override + public void run() { + result.success(false); + } + }); } } }) - .start(); + .start(); } else if ("autoInitEnabled".equals(call.method)) { result.success(FirebaseMessaging.getInstance().isAutoInitEnabled()); } else if ("setAutoInitEnabled".equals(call.method)) { From 9b81ad0fbd0c9a44852b8481453cdf64908aa268 Mon Sep 17 00:00:00 2001 From: Dat Nguyen Date: Tue, 25 Jun 2019 17:05:04 +0700 Subject: [PATCH 2/5] [firebase_messaging] fix crash when calling func deleteInstanceID (#1756) * Rebase onto master * Switch from Looper to runOnUIThread * Dumping version and change log --- packages/firebase_messaging/CHANGELOG.md | 4 +++ .../FirebaseMessagingPlugin.java | 30 ++++++++++--------- packages/firebase_messaging/pubspec.yaml | 2 +- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/packages/firebase_messaging/CHANGELOG.md b/packages/firebase_messaging/CHANGELOG.md index 8d5fb83365e3..8626618f361f 100644 --- a/packages/firebase_messaging/CHANGELOG.md +++ b/packages/firebase_messaging/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.5 + +* Fix crash when call deleteInstanceID. + ## 5.0.4 * Automatically use version from pubspec.yaml when reporting usage to Firebase. diff --git a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java index 56c21b2f586e..ae920fbfd5a5 100644 --- a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java @@ -9,8 +9,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; import android.util.Log; import androidx.annotation.NonNull; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -150,20 +148,24 @@ public void onComplete(@NonNull Task task) { public void run() { try { FirebaseInstanceId.getInstance().deleteInstanceId(); - new Handler(Looper.getMainLooper()).post(new Runnable() { - @Override - public void run() { - result.success(true); - } - }); + if (registrar.activity() != null) { + registrar.activity().runOnUiThread(new Runnable() { + @Override + public void run() { + result.success(true); + } + }); + } } catch (IOException ex) { Log.e(TAG, "deleteInstanceID, error:", ex); - new Handler(Looper.getMainLooper()).post(new Runnable() { - @Override - public void run() { - result.success(false); - } - }); + if (registrar.activity() != null) { + registrar.activity().runOnUiThread(new Runnable() { + @Override + public void run() { + result.success(false); + } + }); + } } } }) diff --git a/packages/firebase_messaging/pubspec.yaml b/packages/firebase_messaging/pubspec.yaml index 10d2f8e2eae5..f7fdb5b7223a 100644 --- a/packages/firebase_messaging/pubspec.yaml +++ b/packages/firebase_messaging/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for Firebase Cloud Messaging, a cross-platform messaging solution that lets you reliably deliver messages on Android and iOS. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_messaging -version: 5.0.4 +version: 5.0.5 flutter: plugin: From 144d2a24e73805d15c15544ba94d2d9605f65703 Mon Sep 17 00:00:00 2001 From: Dat Nguyen Date: Tue, 25 Jun 2019 17:25:49 +0700 Subject: [PATCH 3/5] [firebase_messaging] fix crash when calling func deleteInstanceID (#1756) * change commit author * update change log --- packages/firebase_messaging/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firebase_messaging/CHANGELOG.md b/packages/firebase_messaging/CHANGELOG.md index 8626618f361f..ed08ac8bb297 100644 --- a/packages/firebase_messaging/CHANGELOG.md +++ b/packages/firebase_messaging/CHANGELOG.md @@ -1,6 +1,6 @@ ## 5.0.5 -* Fix crash when call deleteInstanceID. +* Fix app will be crashed when call deleteInstanceID. ## 5.0.4 From 878b6a06e8108636cebb8ed7645ecf19197a889d Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Mon, 8 Jul 2019 07:39:29 -0700 Subject: [PATCH 4/5] Update CHANGELOG --- packages/firebase_messaging/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/firebase_messaging/CHANGELOG.md b/packages/firebase_messaging/CHANGELOG.md index ed08ac8bb297..206ce3796ffa 100644 --- a/packages/firebase_messaging/CHANGELOG.md +++ b/packages/firebase_messaging/CHANGELOG.md @@ -1,6 +1,6 @@ ## 5.0.5 -* Fix app will be crashed when call deleteInstanceID. +* On Android, fix crash when calling `deleteInstanceID` with latest Flutter engine. ## 5.0.4 From 2bd5f45cd3c17e8f619aaf4196f0ae7568606ae2 Mon Sep 17 00:00:00 2001 From: Collin Jackson Date: Mon, 8 Jul 2019 08:30:23 -0700 Subject: [PATCH 5/5] reformat --- .../FirebaseMessagingPlugin.java | 32 +++++++++++-------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java index ae920fbfd5a5..11befeba8642 100644 --- a/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/android/src/main/java/io/flutter/plugins/firebasemessaging/FirebaseMessagingPlugin.java @@ -149,27 +149,33 @@ public void run() { try { FirebaseInstanceId.getInstance().deleteInstanceId(); if (registrar.activity() != null) { - registrar.activity().runOnUiThread(new Runnable() { - @Override - public void run() { - result.success(true); - } - }); + registrar + .activity() + .runOnUiThread( + new Runnable() { + @Override + public void run() { + result.success(true); + } + }); } } catch (IOException ex) { Log.e(TAG, "deleteInstanceID, error:", ex); if (registrar.activity() != null) { - registrar.activity().runOnUiThread(new Runnable() { - @Override - public void run() { - result.success(false); - } - }); + registrar + .activity() + .runOnUiThread( + new Runnable() { + @Override + public void run() { + result.success(false); + } + }); } } } }) - .start(); + .start(); } else if ("autoInitEnabled".equals(call.method)) { result.success(FirebaseMessaging.getInstance().isAutoInitEnabled()); } else if ("setAutoInitEnabled".equals(call.method)) {