[android_alarm_manager] Android Code Inspection and Clean up (#3020)

-Werror and code cleanup for Java code.
diff --git a/packages/android_alarm_manager/CHANGELOG.md b/packages/android_alarm_manager/CHANGELOG.md
index faa2c73..22c3d82 100644
--- a/packages/android_alarm_manager/CHANGELOG.md
+++ b/packages/android_alarm_manager/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.4.5+13
+
+* Android Code Inspection and Clean up.
+
 ## 0.4.5+12
 
 * Update package:e2e reference to use the local version in the flutter/plugins
diff --git a/packages/android_alarm_manager/android/build.gradle b/packages/android_alarm_manager/android/build.gradle
index 04d09f6..8a59fed 100644
--- a/packages/android_alarm_manager/android/build.gradle
+++ b/packages/android_alarm_manager/android/build.gradle
@@ -1,5 +1,6 @@
 group 'io.flutter.plugins.androidalarmmanager'
 version '1.0-SNAPSHOT'
+def args = ["-Xlint:deprecation","-Xlint:unchecked","-Werror"]
 
 buildscript {
     repositories {
@@ -19,6 +20,10 @@
     }
 }
 
+project.getTasks().withType(JavaCompile){
+    options.compilerArgs.addAll(args)
+}
+
 apply plugin: 'com.android.library'
 
 android {
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 fb6e7f8..107d767 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
@@ -17,7 +17,6 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
@@ -76,9 +75,8 @@
     synchronized (alarmQueue) {
       // Handle all the alarm events received before the Dart isolate was
       // initialized, then clear the queue.
-      Iterator<Intent> i = alarmQueue.iterator();
-      while (i.hasNext()) {
-        flutterBackgroundExecutor.executeDartCallbackInBackgroundIsolate(i.next(), null);
+      for (Intent intent : alarmQueue) {
+        flutterBackgroundExecutor.executeDartCallbackInBackgroundIsolate(intent, null);
       }
       alarmQueue.clear();
     }
@@ -231,7 +229,7 @@
   }
 
   private static String getPersistentAlarmKey(int requestCode) {
-    return "android_alarm_manager/persistent_alarm_" + Integer.toString(requestCode);
+    return "android_alarm_manager/persistent_alarm_" + requestCode;
   }
 
   private static void addPersistentAlarm(
@@ -276,13 +274,14 @@
   }
 
   private static void clearPersistentAlarm(Context context, int requestCode) {
+    String request = String.valueOf(requestCode);
     SharedPreferences p = context.getSharedPreferences(SHARED_PREFERENCES_KEY, 0);
     synchronized (persistentAlarmsLock) {
       Set<String> persistentAlarms = p.getStringSet(PERSISTENT_ALARMS_SET_KEY, null);
-      if ((persistentAlarms == null) || !persistentAlarms.contains(requestCode)) {
+      if ((persistentAlarms == null) || !persistentAlarms.contains(request)) {
         return;
       }
-      persistentAlarms.remove(requestCode);
+      persistentAlarms.remove(request);
       String key = getPersistentAlarmKey(requestCode);
       p.edit().remove(key).putStringSet(PERSISTENT_ALARMS_SET_KEY, persistentAlarms).apply();
 
@@ -301,14 +300,12 @@
         return;
       }
 
-      Iterator<String> it = persistentAlarms.iterator();
-      while (it.hasNext()) {
-        int requestCode = Integer.parseInt(it.next());
+      for (String persistentAlarm : persistentAlarms) {
+        int requestCode = Integer.parseInt(persistentAlarm);
         String key = getPersistentAlarmKey(requestCode);
         String json = p.getString(key, null);
         if (json == null) {
-          Log.e(
-              TAG, "Data for alarm request code " + Integer.toString(requestCode) + " is invalid.");
+          Log.e(TAG, "Data for alarm request code " + requestCode + " is invalid.");
           continue;
         }
         try {
diff --git a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AndroidAlarmManagerPlugin.java b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AndroidAlarmManagerPlugin.java
index 2f3f5f9..5a135f9 100644
--- a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AndroidAlarmManagerPlugin.java
+++ b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/AndroidAlarmManagerPlugin.java
@@ -107,37 +107,43 @@
     String method = call.method;
     Object arguments = call.arguments;
     try {
-      if (method.equals("AlarmService.start")) {
-        // This message is sent when the Dart side of this plugin is told to initialize.
-        long callbackHandle = ((JSONArray) arguments).getLong(0);
-        // In response, this (native) side of the plugin needs to spin up a background
-        // Dart isolate by using the given callbackHandle, and then setup a background
-        // method channel to communicate with the new background isolate. Once completed,
-        // this onMethodCall() method will receive messages from both the primary and background
-        // method channels.
-        AlarmService.setCallbackDispatcher(context, callbackHandle);
-        AlarmService.startBackgroundIsolate(context, callbackHandle);
-        result.success(true);
-      } else if (method.equals("Alarm.periodic")) {
-        // This message indicates that the Flutter app would like to schedule a periodic
-        // task.
-        PeriodicRequest periodicRequest = PeriodicRequest.fromJson((JSONArray) arguments);
-        AlarmService.setPeriodic(context, periodicRequest);
-        result.success(true);
-      } else if (method.equals("Alarm.oneShotAt")) {
-        // This message indicates that the Flutter app would like to schedule a one-time
-        // task.
-        OneShotRequest oneShotRequest = OneShotRequest.fromJson((JSONArray) arguments);
-        AlarmService.setOneShot(context, oneShotRequest);
-        result.success(true);
-      } else if (method.equals("Alarm.cancel")) {
-        // This message indicates that the Flutter app would like to cancel a previously
-        // scheduled task.
-        int requestCode = ((JSONArray) arguments).getInt(0);
-        AlarmService.cancel(context, requestCode);
-        result.success(true);
-      } else {
-        result.notImplemented();
+      switch (method) {
+        case "AlarmService.start":
+          // This message is sent when the Dart side of this plugin is told to initialize.
+          long callbackHandle = ((JSONArray) arguments).getLong(0);
+          // In response, this (native) side of the plugin needs to spin up a background
+          // Dart isolate by using the given callbackHandle, and then setup a background
+          // method channel to communicate with the new background isolate. Once completed,
+          // this onMethodCall() method will receive messages from both the primary and background
+          // method channels.
+          AlarmService.setCallbackDispatcher(context, callbackHandle);
+          AlarmService.startBackgroundIsolate(context, callbackHandle);
+          result.success(true);
+          break;
+        case "Alarm.periodic":
+          // This message indicates that the Flutter app would like to schedule a periodic
+          // task.
+          PeriodicRequest periodicRequest = PeriodicRequest.fromJson((JSONArray) arguments);
+          AlarmService.setPeriodic(context, periodicRequest);
+          result.success(true);
+          break;
+        case "Alarm.oneShotAt":
+          // This message indicates that the Flutter app would like to schedule a one-time
+          // task.
+          OneShotRequest oneShotRequest = OneShotRequest.fromJson((JSONArray) arguments);
+          AlarmService.setOneShot(context, oneShotRequest);
+          result.success(true);
+          break;
+        case "Alarm.cancel":
+          // This message indicates that the Flutter app would like to cancel a previously
+          // scheduled task.
+          int requestCode = ((JSONArray) arguments).getInt(0);
+          AlarmService.cancel(context, requestCode);
+          result.success(true);
+          break;
+        default:
+          result.notImplemented();
+          break;
       }
     } catch (JSONException e) {
       result.error("error", "JSON error: " + e.getMessage(), null);
diff --git a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/FlutterBackgroundExecutor.java b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/FlutterBackgroundExecutor.java
index 4e755c3..8d52908 100644
--- a/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/FlutterBackgroundExecutor.java
+++ b/packages/android_alarm_manager/android/src/main/java/io/flutter/plugins/androidalarmmanager/FlutterBackgroundExecutor.java
@@ -78,7 +78,6 @@
   @Override
   public void onMethodCall(MethodCall call, Result result) {
     String method = call.method;
-    Object arguments = call.arguments;
     try {
       if (method.equals("AlarmService.initialized")) {
         // This message is sent by the background method channel as soon as the background isolate
@@ -152,9 +151,9 @@
     }
 
     Log.i(TAG, "Starting AlarmService...");
-    String appBundlePath = FlutterMain.findAppBundlePath(context);
+    String appBundlePath = FlutterMain.findAppBundlePath();
     AssetManager assets = context.getAssets();
-    if (appBundlePath != null && !isRunning()) {
+    if (!isRunning()) {
       backgroundFlutterEngine = new FlutterEngine(context);
 
       // We need to create an instance of `FlutterEngine` before looking up the
@@ -162,10 +161,6 @@
       // lookup will fail.
       FlutterCallbackInformation flutterCallback =
           FlutterCallbackInformation.lookupCallbackInformation(callbackHandle);
-      if (flutterCallback == null) {
-        Log.e(TAG, "Fatal: failed to find callback");
-        return;
-      }
 
       DartExecutor executor = backgroundFlutterEngine.getDartExecutor();
       initializeMethodChannel(executor);
diff --git a/packages/android_alarm_manager/pubspec.yaml b/packages/android_alarm_manager/pubspec.yaml
index 8e46b8c..85c6609 100644
--- a/packages/android_alarm_manager/pubspec.yaml
+++ b/packages/android_alarm_manager/pubspec.yaml
@@ -4,7 +4,7 @@
 # 0.4.y+z is compatible with 1.0.0, if you land a breaking change bump
 # the version to 2.0.0.
 # See more details: https://github.com/flutter/flutter/wiki/Package-migration-to-1.0.0
-version: 0.4.5+11
+version: 0.4.5+12
 homepage: https://github.com/flutter/plugins/tree/master/packages/android_alarm_manager
 
 dependencies: