Backporting calls to TelecomManager#silenceRinger

The method was a system API pre-M, but a public method in M. Added a
compat method which checks if the method is callable. In the event that
the method can't be called, the compat method is a noop - this matches
the functionality from the L version of the phone.

Bug=25776171
Change-Id: I4a9fc19bb2bf2749d697da2b8643601ebd1eb4a8
diff --git a/src/com/android/dialer/compat/telecom/TelecomManagerCompat.java b/src/com/android/dialer/compat/telecom/TelecomManagerCompat.java
index 05055a4..845f378 100644
--- a/src/com/android/dialer/compat/telecom/TelecomManagerCompat.java
+++ b/src/com/android/dialer/compat/telecom/TelecomManagerCompat.java
@@ -82,4 +82,18 @@
         }
         return PhoneNumberUtils.isVoiceMailNumber(number);
     }
+
+    /**
+     * Silences the ringer if a ringing call exists. Noop if {@link TelecomManager#silenceRinger()}
+     * is unavailable.
+     *
+     * @param telecomManager the {@link TelecomManager} to use to silence the ringer
+     * @throws NullPointerException if telecomManager is null
+     */
+    public static void silenceRinger(TelecomManager telecomManager) {
+        if (CompatUtils.isMarshmallowCompatible() || CompatUtils
+                .isMethodAvailable("android.telecom.TelecomManager", "silenceRinger")) {
+            telecomManager.silenceRinger();
+        }
+    }
 }
diff --git a/src/com/android/dialer/util/TelecomUtil.java b/src/com/android/dialer/util/TelecomUtil.java
index bc6b32d..01a3794 100644
--- a/src/com/android/dialer/util/TelecomUtil.java
+++ b/src/com/android/dialer/util/TelecomUtil.java
@@ -62,7 +62,7 @@
     public static void silenceRinger(Context context) {
         if (hasModifyPhoneStatePermission(context)) {
             try {
-                getTelecomManager(context).silenceRinger();
+                TelecomManagerCompat.silenceRinger(getTelecomManager(context));
             } catch (SecurityException e) {
                 // Just in case
                 Log.w(TAG, "TelecomManager.silenceRinger called without permission.");