[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