From 70a3e828aa6a436ed8a7cb51727959c450e0d426 Mon Sep 17 00:00:00 2001 From: Ta-wei Yen Date: Thu, 20 Apr 2017 12:41:17 -0700 Subject: [PATCH] Move sendVisualVoicemailSms and setSmsFilterSettings to Telephony Bug: 35766990 Change-Id: Ife9df5baa9b511cd8e9c043cb92236b7697582c1 Fixes: 35766990 Test: CtsTelephonyTestCases VisualVoicemailServiceTest --- api/current.txt | 4 +- api/system-current.txt | 2 + api/test-current.txt | 4 +- .../android/telephony/TelephonyManager.java | 49 +++++++++++++++++++ .../telephony/VisualVoicemailService.java | 14 ++++-- .../VisualVoicemailSmsFilterSettings.java | 2 +- 6 files changed, 67 insertions(+), 8 deletions(-) diff --git a/api/current.txt b/api/current.txt index 0cdc8f2ef8061..cf376baa83db4 100644 --- a/api/current.txt +++ b/api/current.txt @@ -40254,10 +40254,12 @@ package android.telephony { method public void sendDialerSpecialCode(java.lang.String); method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler); + method public void sendVisualVoicemailSms(java.lang.String, int, java.lang.String, android.app.PendingIntent); method public void setDataEnabled(boolean); method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String); method public boolean setOperatorBrandOverride(java.lang.String); method public boolean setPreferredNetworkTypeToGlobal(); + method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings); method public boolean setVoiceMailNumber(java.lang.String, java.lang.String); method public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri); method public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean); @@ -40349,8 +40351,6 @@ package android.telephony { method public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); method public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms); method public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask); - method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, java.lang.String, short, java.lang.String, android.app.PendingIntent); - method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings); field public static final java.lang.String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService"; } diff --git a/api/system-current.txt b/api/system-current.txt index a10806b359814..2dc4314e8327c 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -43777,6 +43777,7 @@ package android.telephony { method public void sendDialerSpecialCode(java.lang.String); method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler); + method public void sendVisualVoicemailSms(java.lang.String, int, java.lang.String, android.app.PendingIntent); method public int setAllowedCarriers(int, java.util.List); method public void setDataEnabled(boolean); method public void setDataEnabled(int, boolean); @@ -43786,6 +43787,7 @@ package android.telephony { method public boolean setRadio(boolean); method public boolean setRadioPower(boolean); method public deprecated void setVisualVoicemailEnabled(android.telecom.PhoneAccountHandle, boolean); + method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings); method public boolean setVoiceMailNumber(java.lang.String, java.lang.String); method public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri); method public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean); diff --git a/api/test-current.txt b/api/test-current.txt index a861e9d39aa76..b6510d93f0203 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -40448,10 +40448,12 @@ package android.telephony { method public void sendDialerSpecialCode(java.lang.String); method public java.lang.String sendEnvelopeWithStatus(java.lang.String); method public void sendUssdRequest(java.lang.String, android.telephony.TelephonyManager.UssdResponseCallback, android.os.Handler); + method public void sendVisualVoicemailSms(java.lang.String, int, java.lang.String, android.app.PendingIntent); method public void setDataEnabled(boolean); method public boolean setLine1NumberForDisplay(java.lang.String, java.lang.String); method public boolean setOperatorBrandOverride(java.lang.String); method public boolean setPreferredNetworkTypeToGlobal(); + method public void setVisualVoicemailSmsFilterSettings(android.telephony.VisualVoicemailSmsFilterSettings); method public boolean setVoiceMailNumber(java.lang.String, java.lang.String); method public void setVoicemailRingtoneUri(android.telecom.PhoneAccountHandle, android.net.Uri); method public void setVoicemailVibrationEnabled(android.telecom.PhoneAccountHandle, boolean); @@ -40543,8 +40545,6 @@ package android.telephony { method public abstract void onSimRemoved(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telecom.PhoneAccountHandle); method public abstract void onSmsReceived(android.telephony.VisualVoicemailService.VisualVoicemailTask, android.telephony.VisualVoicemailSms); method public abstract void onStopped(android.telephony.VisualVoicemailService.VisualVoicemailTask); - method public static final void sendVisualVoicemailSms(android.content.Context, android.telecom.PhoneAccountHandle, java.lang.String, short, java.lang.String, android.app.PendingIntent); - method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings); field public static final java.lang.String SERVICE_INTERFACE = "android.telephony.VisualVoicemailService"; } diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 397aa0020d133..588fcc6c700fd 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -45,6 +45,7 @@ import android.provider.Settings.SettingNotFoundException; import android.service.carrier.CarrierIdentifier; import android.telecom.PhoneAccount; import android.telecom.PhoneAccountHandle; +import android.telephony.VisualVoicemailService.VisualVoicemailTask; import android.telephony.ims.feature.ImsFeature; import android.util.Log; @@ -2762,6 +2763,54 @@ public class TelephonyManager { return null; } + /** + * Set the visual voicemail SMS filter settings for the subscription ID pinned + * to the TelephonyManager. + * When the filter is enabled, {@link + * VisualVoicemailService#onSmsReceived(VisualVoicemailTask, VisualVoicemailSms)} will be + * called when a SMS matching the settings is received. The caller should have + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} and implement a + * VisualVoicemailService. + * + *

Requires Permission: + * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} + * + * @param settings The settings for the filter, or {@code null} to disable the filter. + */ + public void setVisualVoicemailSmsFilterSettings(VisualVoicemailSmsFilterSettings settings) { + if (settings == null) { + disableVisualVoicemailSmsFilter(mSubId); + } else { + enableVisualVoicemailSmsFilter(mSubId, settings); + } + } + + /** + * Send a visual voicemail SMS. The caller must be the current default dialer. + * A {@link VisualVoicemailService} uses this method to send a command via SMS to the carrier's + * visual voicemail server. Some examples for carriers using the OMTP standard include + * activating and deactivating visual voicemail, or requesting the current visual voicemail + * provisioning status. See the OMTP Visual Voicemail specification for more information on the + * format of these SMS messages. + * + *

Requires Permission: + * {@link android.Manifest.permission#SEND_SMS SEND_SMS} + * + * @param number The destination number. + * @param port The destination port for data SMS, or 0 for text SMS. + * @param text The message content. For data sms, it will be encoded as a UTF-8 byte stream. + * @param sentIntent The sent intent passed to the {@link SmsManager} + * + * @throws SecurityException if the caller is not the current default dialer + * + * @see SmsManager#sendDataMessage(String, String, short, byte[], PendingIntent, PendingIntent) + * @see SmsManager#sendTextMessage(String, String, String, PendingIntent, PendingIntent) + */ + public void sendVisualVoicemailSms(String number, int port, String text, + PendingIntent sentIntent) { + sendVisualVoicemailSmsForSubscriber(mSubId, number, port, text, sentIntent); + } + /** * Enables the visual voicemail SMS filter for a phone account. When the filter is * enabled, Incoming SMS messages matching the OMTP VVM SMS interface will be redirected to the diff --git a/telephony/java/android/telephony/VisualVoicemailService.java b/telephony/java/android/telephony/VisualVoicemailService.java index e211f76beccf0..fe30eb7bb0050 100644 --- a/telephony/java/android/telephony/VisualVoicemailService.java +++ b/telephony/java/android/telephony/VisualVoicemailService.java @@ -18,6 +18,7 @@ package android.telephony; import android.annotation.MainThread; import android.annotation.SdkConstant; +import android.annotation.SystemApi; import android.app.PendingIntent; import android.app.Service; import android.content.Context; @@ -199,7 +200,8 @@ public abstract class VisualVoicemailService extends Service { /** * Called when a SMS matching the {@link VisualVoicemailSmsFilterSettings} set by - * {@link #setSmsFilterSettings(Context, PhoneAccountHandle, VisualVoicemailSmsFilterSettings)} + * {@link TelephonyManager#setVisualVoicemailSmsFilterSettings(VisualVoicemailSmsFilterSettings) + * } * is received. * * @param task The task representing this event. {@link VisualVoicemailTask#finish()} must be @@ -240,8 +242,11 @@ public abstract class VisualVoicemailService extends Service { * * @param phoneAccountHandle The account to apply the settings to. * @param settings The settings for the filter, or {@code null} to disable the filter. + * + * @hide */ - public final static void setSmsFilterSettings(Context context, + @SystemApi + public static final void setSmsFilterSettings(Context context, PhoneAccountHandle phoneAccountHandle, VisualVoicemailSmsFilterSettings settings) { TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); @@ -269,8 +274,11 @@ public abstract class VisualVoicemailService extends Service { * * @see SmsManager#sendDataMessage(String, String, short, byte[], PendingIntent, PendingIntent) * @see SmsManager#sendTextMessage(String, String, String, PendingIntent, PendingIntent) + * + * @hide */ - public final static void sendVisualVoicemailSms(Context context, + @SystemApi + public static final void sendVisualVoicemailSms(Context context, PhoneAccountHandle phoneAccountHandle, String number, short port, String text, PendingIntent sentIntent) { TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); diff --git a/telephony/java/android/telephony/VisualVoicemailSmsFilterSettings.java b/telephony/java/android/telephony/VisualVoicemailSmsFilterSettings.java index 56a8c62558243..8ed96a3a4f361 100644 --- a/telephony/java/android/telephony/VisualVoicemailSmsFilterSettings.java +++ b/telephony/java/android/telephony/VisualVoicemailSmsFilterSettings.java @@ -38,7 +38,7 @@ import java.util.List; *

Use {@link android.telephony.VisualVoicemailSmsFilterSettings.Builder} to construct this * class. * - * @see VisualVoicemailService#setSmsFilterSettings(Context, PhoneAccountHandle, VisualVoicemailSmsFilterSettings) + * @see TelephonyManager#setVisualVoicemailSmsFilterSettings(VisualVoicemailSmsFilterSettings) */ public final class VisualVoicemailSmsFilterSettings implements Parcelable {