summaryrefslogtreecommitdiff
path: root/java/com/android/voicemail/impl/TelephonyMangerCompat.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/voicemail/impl/TelephonyMangerCompat.java')
-rw-r--r--java/com/android/voicemail/impl/TelephonyMangerCompat.java115
1 files changed, 115 insertions, 0 deletions
diff --git a/java/com/android/voicemail/impl/TelephonyMangerCompat.java b/java/com/android/voicemail/impl/TelephonyMangerCompat.java
new file mode 100644
index 000000000..404b4d6ca
--- /dev/null
+++ b/java/com/android/voicemail/impl/TelephonyMangerCompat.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License
+ */
+
+package com.android.voicemail.impl;
+
+import android.app.PendingIntent;
+import android.content.Context;
+import android.telecom.PhoneAccountHandle;
+import android.telephony.TelephonyManager;
+import android.telephony.VisualVoicemailService;
+import android.telephony.VisualVoicemailSmsFilterSettings;
+import com.android.dialer.common.LogUtil;
+import java.lang.reflect.Method;
+
+/** Handles {@link TelephonyManager} API changes in experimental SDK */
+public class TelephonyMangerCompat {
+ /** Moved from VisualVoicemailService to TelephonyManager */
+ public static String sendVisualVoicemailSms(
+ Context context,
+ PhoneAccountHandle phoneAccountHandle,
+ String number,
+ int port,
+ String text,
+ PendingIntent sentIntent) {
+ try {
+ Method method =
+ TelephonyManager.class.getMethod(
+ "sendVisualVoicemailSms", String.class, int.class, String.class, PendingIntent.class);
+ try {
+ LogUtil.i("TelephonyMangerCompat.sendVisualVoicemailSms", "using TelephonyManager");
+ TelephonyManager telephonyManager =
+ context
+ .getSystemService(TelephonyManager.class)
+ .createForPhoneAccountHandle(phoneAccountHandle);
+ return (String) method.invoke(telephonyManager, number, port, text, sentIntent);
+ } catch (ReflectiveOperationException e) {
+ throw new RuntimeException(e);
+ }
+ } catch (NoSuchMethodException e) {
+ // Do nothing, try the next version.
+ }
+
+ try {
+ LogUtil.i("TelephonyMangerCompat.sendVisualVoicemailSms", "using VisualVoicemailService");
+ Method method =
+ VisualVoicemailService.class.getMethod(
+ "sendVisualVoicemailSms",
+ Context.class,
+ PhoneAccountHandle.class,
+ String.class,
+ short.class,
+ String.class,
+ PendingIntent.class);
+ return (String)
+ method.invoke(null, context, phoneAccountHandle, number, (short) port, text, sentIntent);
+
+ } catch (ReflectiveOperationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ /** Moved from VisualVoicemailService to TelephonyManager */
+ public static String setVisualVoicemailSmsFilterSettings(
+ Context context,
+ PhoneAccountHandle phoneAccountHandle,
+ VisualVoicemailSmsFilterSettings settings) {
+ try {
+ Method method =
+ TelephonyManager.class.getMethod(
+ "setVisualVoicemailSmsFilterSettings", VisualVoicemailSmsFilterSettings.class);
+ try {
+ LogUtil.i(
+ "TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings", "using TelephonyManager");
+ TelephonyManager telephonyManager =
+ context
+ .getSystemService(TelephonyManager.class)
+ .createForPhoneAccountHandle(phoneAccountHandle);
+ return (String) method.invoke(telephonyManager, settings);
+ } catch (ReflectiveOperationException e) {
+ throw new RuntimeException(e);
+ }
+ } catch (NoSuchMethodException e) {
+ // Do nothing, try the next version.
+ }
+
+ try {
+ LogUtil.i(
+ "TelephonyMangerCompat.setVisualVoicemailSmsFilterSettings",
+ "using VisualVoicemailService");
+ Method method =
+ VisualVoicemailService.class.getMethod(
+ "setSmsFilterSettings",
+ Context.class,
+ PhoneAccountHandle.class,
+ VisualVoicemailSmsFilterSettings.class);
+ return (String) method.invoke(null, context, phoneAccountHandle, settings);
+
+ } catch (ReflectiveOperationException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}