From e18b3847c85610283d341616143a90a96ee3d8c6 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Fri, 12 May 2023 15:21:35 -0400 Subject: [PATCH 1/5] chore(battery_plus): Use context compat to set exported state See https://developer.android.com/guide/components/broadcasts#context-registered-receivers https://developer.android.com/reference/androidx/core/content/ContextCompat --- packages/battery_plus/battery_plus/android/build.gradle | 1 + .../fluttercommunity/plus/battery/BatteryPlusPlugin.kt | 8 +++++++- .../battery_plus/example/android/build.gradle | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/battery_plus/battery_plus/android/build.gradle b/packages/battery_plus/battery_plus/android/build.gradle index 1ce27d229d..036f2b9c82 100644 --- a/packages/battery_plus/battery_plus/android/build.gradle +++ b/packages/battery_plus/battery_plus/android/build.gradle @@ -47,4 +47,5 @@ android { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation "androidx.core:core-ktx:1.10.1" } diff --git a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt index ee59a13daa..fdd872e4b5 100644 --- a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt +++ b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt @@ -20,6 +20,8 @@ import java.util.Locale import android.os.PowerManager import android.provider.Settings import androidx.annotation.RequiresApi +import androidx.core.content.ContextCompat + /** BatteryPlusPlugin */ class BatteryPlusPlugin : MethodCallHandler, EventChannel.StreamHandler, FlutterPlugin { @@ -79,7 +81,11 @@ class BatteryPlusPlugin : MethodCallHandler, EventChannel.StreamHandler, Flutter override fun onListen(arguments: Any?, events: EventSink) { chargingStateChangeReceiver = createChargingStateChangeReceiver(events) - applicationContext?.registerReceiver(chargingStateChangeReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) + ContextCompat.registerReceiver( + applicationContext?, + chargingStateChangeReceiver, + IntentFilter(Intent.ACTION_BATTERY_CHANGED), + ContextCompat.RECEIVER_EXPORTED); val status = getBatteryStatus() publishBatteryStatus(events, status) } diff --git a/packages/battery_plus/battery_plus/example/android/build.gradle b/packages/battery_plus/battery_plus/example/android/build.gradle index ec3244ca52..dd1dff3219 100644 --- a/packages/battery_plus/battery_plus/example/android/build.gradle +++ b/packages/battery_plus/battery_plus/example/android/build.gradle @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } From d6af6373b6c02ba4f6bd14969b8195c7acefca70 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Fri, 12 May 2023 15:56:57 -0400 Subject: [PATCH 2/5] remove ; and use non null context --- .../dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt index fdd872e4b5..6e6860b76f 100644 --- a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt +++ b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt @@ -82,10 +82,10 @@ class BatteryPlusPlugin : MethodCallHandler, EventChannel.StreamHandler, Flutter override fun onListen(arguments: Any?, events: EventSink) { chargingStateChangeReceiver = createChargingStateChangeReceiver(events) ContextCompat.registerReceiver( - applicationContext?, + applicationContext!, chargingStateChangeReceiver, IntentFilter(Intent.ACTION_BATTERY_CHANGED), - ContextCompat.RECEIVER_EXPORTED); + ContextCompat.RECEIVER_EXPORTED) val status = getBatteryStatus() publishBatteryStatus(events, status) } From 4a15f6a8ae2355f150a8649f972089480180fa40 Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Fri, 12 May 2023 17:19:36 -0400 Subject: [PATCH 3/5] Note to not merge with current implementation --- .../plus/battery/BatteryPlusPlugin.kt | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt index 6e6860b76f..4177de5a80 100644 --- a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt +++ b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt @@ -21,6 +21,7 @@ import android.os.PowerManager import android.provider.Settings import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat +import androidx.core.content.ContextCompat.RECEIVER_EXPORTED /** BatteryPlusPlugin */ @@ -81,11 +82,13 @@ class BatteryPlusPlugin : MethodCallHandler, EventChannel.StreamHandler, Flutter override fun onListen(arguments: Any?, events: EventSink) { chargingStateChangeReceiver = createChargingStateChangeReceiver(events) - ContextCompat.registerReceiver( - applicationContext!, - chargingStateChangeReceiver, - IntentFilter(Intent.ACTION_BATTERY_CHANGED), - ContextCompat.RECEIVER_EXPORTED) + // DO NOT MERGE, this alternates states. reidbaker debug before review. + applicationContext?.let { + ContextCompat.registerReceiver( + it, chargingStateChangeReceiver, + IntentFilter(Intent.ACTION_BATTERY_CHANGED), RECEIVER_EXPORTED + ) + } val status = getBatteryStatus() publishBatteryStatus(events, status) } From 4366f35c32c5cefea222b4159430e3b4bb826dab Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Fri, 12 May 2023 17:28:21 -0400 Subject: [PATCH 4/5] Do not export charging state it causes alternating values --- .../dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt index 4177de5a80..f51e8c154a 100644 --- a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt +++ b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt @@ -1,5 +1,6 @@ package dev.fluttercommunity.plus.battery +import android.annotation.SuppressLint import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.EventChannel import io.flutter.embedding.engine.plugins.FlutterPlugin @@ -21,7 +22,7 @@ import android.os.PowerManager import android.provider.Settings import androidx.annotation.RequiresApi import androidx.core.content.ContextCompat -import androidx.core.content.ContextCompat.RECEIVER_EXPORTED +import androidx.core.content.ContextCompat.RECEIVER_NOT_EXPORTED /** BatteryPlusPlugin */ @@ -80,13 +81,14 @@ class BatteryPlusPlugin : MethodCallHandler, EventChannel.StreamHandler, Flutter } } + @SuppressLint("WrongConstant") // Error in ContextCompat for RECEIVER_NOT_EXPORTED override fun onListen(arguments: Any?, events: EventSink) { chargingStateChangeReceiver = createChargingStateChangeReceiver(events) // DO NOT MERGE, this alternates states. reidbaker debug before review. applicationContext?.let { ContextCompat.registerReceiver( it, chargingStateChangeReceiver, - IntentFilter(Intent.ACTION_BATTERY_CHANGED), RECEIVER_EXPORTED + IntentFilter(Intent.ACTION_BATTERY_CHANGED), RECEIVER_NOT_EXPORTED ) } val status = getBatteryStatus() From 0d68d926a44f79af64bc5db144561b297a87713a Mon Sep 17 00:00:00 2001 From: Reid Baker Date: Mon, 15 May 2023 08:28:20 -0500 Subject: [PATCH 5/5] remove pre review comment. --- .../dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt index f51e8c154a..3dd1bd3699 100644 --- a/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt +++ b/packages/battery_plus/battery_plus/android/src/main/kotlin/dev/fluttercommunity/plus/battery/BatteryPlusPlugin.kt @@ -84,7 +84,6 @@ class BatteryPlusPlugin : MethodCallHandler, EventChannel.StreamHandler, Flutter @SuppressLint("WrongConstant") // Error in ContextCompat for RECEIVER_NOT_EXPORTED override fun onListen(arguments: Any?, events: EventSink) { chargingStateChangeReceiver = createChargingStateChangeReceiver(events) - // DO NOT MERGE, this alternates states. reidbaker debug before review. applicationContext?.let { ContextCompat.registerReceiver( it, chargingStateChangeReceiver,