[android alarm manager] Fix crash below API 19 (#1849)
* fix possible crash in APIs below 19 and some clean ups.
diff --git a/packages/android_alarm_manager/CHANGELOG.md b/packages/android_alarm_manager/CHANGELOG.md
index 24c11e1..31f02e1 100644
--- a/packages/android_alarm_manager/CHANGELOG.md
+++ b/packages/android_alarm_manager/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.4.1+7
+
+* Fix possible crash on Android devices with APIs below 19.
+
## 0.4.1+6
* Bump the minimum Flutter version to 1.2.0.
diff --git a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AlarmService.java b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AlarmService.java
index 19a8047..c559250 100644
--- a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AlarmService.java
+++ b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AlarmService.java
@@ -11,6 +11,7 @@
import android.content.SharedPreferences;
import android.os.Handler;
import android.util.Log;
+import androidx.core.app.AlarmManagerCompat;
import androidx.core.app.JobIntentService;
import io.flutter.plugin.common.MethodChannel;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
@@ -253,7 +254,7 @@
if (repeating) {
manager.setRepeating(clock, startMillis, intervalMillis, pendingIntent);
} else {
- manager.setExact(clock, startMillis, pendingIntent);
+ AlarmManagerCompat.setExact(manager, clock, startMillis, pendingIntent);
}
} else {
if (repeating) {
@@ -346,7 +347,7 @@
.edit()
.putString(key, obj.toString())
.putStringSet(PERSISTENT_ALARMS_SET_KEY, persistentAlarms)
- .commit();
+ .apply();
}
}
@@ -359,7 +360,7 @@
}
persistentAlarms.remove(requestCode);
String key = getPersistentAlarmKey(requestCode);
- p.edit().remove(key).putStringSet(PERSISTENT_ALARMS_SET_KEY, persistentAlarms).commit();
+ p.edit().remove(key).putStringSet(PERSISTENT_ALARMS_SET_KEY, persistentAlarms).apply();
if (persistentAlarms.isEmpty()) {
RebootBroadcastReceiver.disableRescheduleOnReboot(context);
@@ -405,26 +406,18 @@
false,
callbackHandle);
} catch (JSONException e) {
- Log.e(
- TAG,
- "Data for alarm request code "
- + Integer.toString(requestCode)
- + " is invalid: "
- + json);
+ Log.e(TAG, "Data for alarm request code " + requestCode + " is invalid: " + json);
}
}
}
}
- private String mAppBundlePath;
-
@Override
public void onCreate() {
super.onCreate();
Context context = getApplicationContext();
FlutterMain.ensureInitializationComplete(context, null);
- mAppBundlePath = FlutterMain.findAppBundlePath(context);
if (!sIsIsolateRunning.get()) {
SharedPreferences p = context.getSharedPreferences(SHARED_PREFERENCES_KEY, 0);
diff --git a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/RebootBroadcastReceiver.java b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/RebootBroadcastReceiver.java
index 3dd7eae..b920afa 100644
--- a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/RebootBroadcastReceiver.java
+++ b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/RebootBroadcastReceiver.java
@@ -32,7 +32,7 @@
*/
@Override
public void onReceive(Context context, Intent intent) {
- if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
+ if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
Log.i("AlarmService", "Rescheduling after boot!");
AlarmService.reschedulePersistentAlarms(context);
}
diff --git a/packages/android_alarm_manager/pubspec.yaml b/packages/android_alarm_manager/pubspec.yaml
index 1cb0aeb..c142c57 100644
--- a/packages/android_alarm_manager/pubspec.yaml
+++ b/packages/android_alarm_manager/pubspec.yaml
@@ -1,7 +1,7 @@
name: android_alarm_manager
description: Flutter plugin for accessing the Android AlarmManager service, and
running Dart code in the background when alarms fire.
-version: 0.4.1+6
+version: 0.4.1+7
author: Flutter Team <flutter-dev@googlegroups.com>
homepage: https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager